Nginx 当HHVM停止响应但进程未停止时自动重新启动
我遇到了一个问题,每12-24小时,HHVM就会崩溃,但它似乎会让进程继续运行。似乎大多数提供商只是使用php5 fpm作为nginx内的故障切换,以提高稳定性。但是,这不会重新启动无响应的hhvm实例 由于进程一直在运行,大多数服务器监视解决方案将其视为一个活动守护进程,而不是重新启动它。HTTP监视的反应可能很慢 是否可以在故障转移时触发hhvm重启?如果没有,那么什么是确保重新启动无响应的侦听守护程序的最佳解决方案。在官方bug上发布了关于此主题的解决方案。 这是他告诉添加到cron的脚本,每2分钟执行一次 我对它做了一些修改,使它能够与HHVM的预构建包一起工作Nginx 当HHVM停止响应但进程未停止时自动重新启动,nginx,monitoring,daemon,hhvm,Nginx,Monitoring,Daemon,Hhvm,我遇到了一个问题,每12-24小时,HHVM就会崩溃,但它似乎会让进程继续运行。似乎大多数提供商只是使用php5 fpm作为nginx内的故障切换,以提高稳定性。但是,这不会重新启动无响应的hhvm实例 由于进程一直在运行,大多数服务器监视解决方案将其视为一个活动守护进程,而不是重新启动它。HTTP监视的反应可能很慢 是否可以在故障转移时触发hhvm重启?如果没有,那么什么是确保重新启动无响应的侦听守护程序的最佳解决方案。在官方bug上发布了关于此主题的解决方案。 这是他告诉添加到cron的脚本
#! /bin/bash
PID="`cat /var/run/hhvm/pid`"
if [ "$PID" == "" ]; then
echo No PID, starting up
/etc/init.d/hhvm start
else
if [ "`ps ax -o pid | grep $PID`" == "" ]; then
echo HHVM PID $PID not running, starting up
# Stop, just in case, if crashed. Else you would get:
# * WARNING: hhvm.83 has already been started
/etc/init.d/hhvm stop
/etc/init.d/hhvm start
fi
fi
关于您对另一个答案的评论,当您有一个返回到php的方法,并且您希望确保HHVM是响应的方法时,一个好的选择是使用来自的解决方案并进行一次更改,在您的状态脚本中检查:
if (defined('HHVM_VERSION')) {
echo 'status';
}
这两种解决方案的结合将处理hhvm所有可能的崩溃方式。我相信这是一个简单的cron脚本,可以检查以确保hhvm进程仍在运行。不幸的是,这并不能解决检查一个仍在“侦听”的进程是否已变得无响应的问题。@etc,HHVM在变得无响应时崩溃:-)并不总是这样。事实上,这是一个相当有文献记载的问题。@etc,我在谈论我六个多月的经验。但是,如果您所说的确实发生了,那么从cron执行一个脚本,该脚本与hello world相呼应,然后比较输出。@等等,在您描述的情况下(我似乎也经历过),HHVM还在听吗?还是仅仅是超时?如果是前者,您可能可以调整此cron来执行类似于lsof-i TCP:9000的操作,而不是查找PID。