一聚教程网:一个值得你收藏的教程网站

热门教程

HHVM崩溃导致网站报502错误的解决方法

时间:2022-06-30 18:38:14 编辑:袖梨 来源:一聚教程网

为了提高性能,之前把博客更换到了HHVM平台,性能确实提高了不少,但是偶尔会遇到502错误,重启HHVM之后就修复,目测是HHVM崩溃了。在网上找了一下,大多数处理思路都是建一个计划任务,在HHVM崩溃的时候重启,由于Linux Cron Job执行的最小时间单位是分,如果HHVM崩溃,最长的宕机时间不会超过一分钟,对普通博客而言,在可以接受的范围内,因此这个方法颇受欢迎。现在就将我尝试过的几种方法分享和大家分享一下:

网站报502错误的方法集锦
 

方法一:监测进程状态重启HHVM

保存以下shell脚本,并赋予执行权限。我先保存为/etc/hhvm/hhvm_dog.sh

#! /bin/bash
 PID="`cat /var/run/hhvm/pid`"
     if [ "$PID" == "" ]; then
        service hhvm start
     if [ "`ps ax -o pid | grep $PID`" == "" ]; then
        service hhvm restart
   fi
fi

然后在crontab中每分钟运行一次这个脚本:
编辑/etc/crontab,在最后增加一行:

* * * * * root /etc/hhvm/hhvm_dog.sh
 
保存,退出,重启cron服务:

service cron restart

方法二:最简单方法

这个方法的思路和第一个方法一样,只是代码比较简洁,一步到位。看不懂代码没事,只需要把下面这句代码添加到/etc/crontab最后就好。

* * * * * root [ -z "`ps -ef | grep hhvm | grep -v grep`" ] && service hhvm restart

方法三: 最佳方案

修改fastcgi缓冲区大小的方式,周良博客使用的是Nginx作为web服务器,亲测有效。 打开nginx配置文件/etc/nginx/nginx.conf 在http{} 中添加一下两行:

 fastcgi_buffers 8 16k; fastcig_buffers_size 32k;

保存退出,重启nginx:

 service nginx restart

这个方法几乎可以完全避免HHVM崩溃,可以说前面的方法是治标,这个方法是治本。是目前我认为最完美的一个解决方案。 当然,还有其他的一些方法,例如写一个脚本,不断通过curl查看首页状态,如果返回502就重启HHVM。有兴趣的朋友可以自己尝试一下。 补充说明:以上方法仅适用于因HHVM崩溃导致的服务器502错误,适用PHP,或者在安装HHVM之前已经安装PHP并且二者冲突(通常不会)导致的502用这几个方法是无效的。

热门栏目