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

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

网站报502错误的方法集锦
 

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

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

<pre>#! /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用这几个方法是无效的。

时间: 2024-09-17 04:49:00

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

Windows 8系统连接网络报651错误的解决方法

最近买了台索尼的电脑,网卡是realtek pcie gbe的,买了个路由器是TP-Link的,根据说明书上登录192.168.1.1进行设置无线 连接名称.联网用户名.密码,就ok了. 索尼电脑连无线是可以连上的,有线就是连不上,报651错误,其他电脑也是 可以连上的,开始一直以为是网卡驱动问题,更新驱动问题还是没解决. 后来发现连索尼这台电脑路由器对应的网络端口没有亮,心里有点嘀咕了, 怕是网卡问题,同一跟网线,其他电脑都ok.以下是解决方法: 1.索性把网络接口对换插了下,路由器的灯亮了,

网站后台生成错误的解决方法

如果有人用过PHP程序,myqsl语言编辑的网站的站长应该偶尔会遇到一种情况,后台一生成就出现错误,生成之后,首页出现空白,但是网站内页还能打开,如果出现这种问题,很明显就是服务器的DNS设置有问题了.如果网站用的是虚拟主机,那么让空间商设置一下就行了,如果是云主机或者vps的话就要自己动手设置了.具体是怎样的呢? Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getadd

权限问题导致Nginx 403 Forbidden错误的解决方法_nginx

今天在一个新的环境上安装nginx,结果访问的都是403 通常显示403我立马都会想到路径配置不对,但我仔细看了一下,目录路径没问题: nginx.conf: 复制代码 代码如下: server {         listen       80;         server_name  localhost;           #charset koi8-r;           #access_log  logs/host.access.log  main;           locat

IIS部署asp.net报404错误的解决方法_win服务器

1).所建网站->(右键)权限->"ASP.NET计算机帐户"是否已添加. 2).所建网站->(右键)属性->ASP.NET选项卡->版本是否为2.0,不是则修改为2.0; 3).IIS->WEB服务扩展中->ASP.NETV2.0是否被禁止,若为禁止状态则启动; 4).所建网站->(右键)属性->主目录->执行权限是否为:纯脚本;应用程序池是否设置: 5).所建网站->(右键)属性->ASP.NET选项卡->

我nignx 服务器 curl 地址https 报502错误是什么原因啊

问题描述 我nignx 服务器 curl 地址https 报502错误是什么原因啊 我nignx 服务器 curl 地址https 报502错误是什么原因啊 代码 $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 500); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl

深入探讨:Nginx 502 Bad Gateway错误的解决方法_php实例

max_children=40 , 每个children平均占用20M-30M内存,children越多,可以同时接受的并发数量越多,一般children的值是网站最高并发数+浮动值,这值再×内存占用,就是你需要用到的内存.max_requests = N 是指当每个children接受了N次请求以后,就会把自己杀死,然后重新建立一个children.PV / max_children = 每一个children接受的request次数[ 默认预设浏览一个只调用一次PHP程序,或许异步调用呢?接

数据库 oracle linux-ORACLELINUX下安装oracle11gxe后连接数据库报ora-12705错误如何解决

问题描述 ORACLELINUX下安装oracle11gxe后连接数据库报ora-12705错误如何解决 实验操作环境: 操作系统:OracleLinux-R7-U0-Server-x86_64 数据库版本:oracle-xe-11.2.0-1.0.x86_64 在上述环境中安装完数据库以后连接登录数据库,操作如下图所示: 报了ora-12705的错误信息 根据网上提供的信息实践了很多方法,修改设置了字符集配置,问题依旧 目前本机的字符集如下图所示: 不知道我是否还忽略了什么关键要素,请高人指教

asp.net下ueditor上传大容量视频报http请求错误的解决方法

故障现象: 当使用百度编辑器ueditor上传大容量视频或大容量图片的时候,编辑器报"http请求错误"的解决方法详解: 原因分析: 目前很多CMS整合了百度的ueditor编辑器,但是上传稍微大一点的文件就会报错, 解决方案 1:修改相对应的ueditor\asp\config.json编辑器文件夹中的配置文件config.json在其中查找"videoMaxSize": 1024000000, /* 上传大小限制,单位B,默认1GBB */ 这是我修改后的参数:

关于SSIS批量抽取Excel文件报0x80004005错误的解决办法

原文:关于SSIS批量抽取Excel文件报0x80004005错误的解决办法 标题: Microsoft Visual Studio ------------------------------ Package [连接管理器"Excel 连接管理器"] 出错: SSIS 错误代码 DTS_E_OLEDBERROR.出现 OLE DB 错误.错误代码: 0x80004005. 已获得 OLE DB 记录.源:"Microsoft JET Database Engine"