VPS侦探论坛

标题: Nginx 502 Bad Gateway 自动重启脚本 [打印本页]

作者: licess    时间: 2010-11-17 21:03
标题: Nginx 502 Bad Gateway 自动重启脚本
推荐脚本
需要确保系统已安装curl,centos可以执行:yum install curl,debian/ubuntu可以执行:apt-get install curl

winscpvi有或nano在/root目录下创建502.sh 内容如下:
  1. #!/bin/bash
  2. # author: licess
  3. # website: http://www.lnmp.org

  4. CheckURL="https://www.vpser.net"

  5. STATUS_CODE=`curl -o /dev/null -m 10 --connect-timeout 10 -s -w %{http_code} $CheckURL`
  6. #echo "$CheckURL Status Code:\t$STATUS_CODE"
  7. if [ "$STATUS_CODE" = "502" ]; then
  8.         /etc/init.d/php-fpm restart
  9. fi
复制代码
chmod +x /root/502.sh
crontab 一分钟执行一次。上面的https://www.vpser.net改成你的地址,如果该页面是静态,需换成以php的页面地址。
crontab 教程:https://www.vpser.net/manage/crontab.html

其他的重启脚本,下面这个如果php函数里禁用了shell_exec 将无法使用。
  1. #!/usr/bin/php
  2. <?
  3. $url = 'https://www.vpser.net';
  4. $cmd = '/etc/init.d/php-fpm restart';

  5. for($i = 0; $i < 5; $i ++){
  6. $exec = "curl --connect-timeout 3 -I $url 2>/dev/null";
  7. $res = shell_exec($exec);

  8. if(stripos($res,'502 Bad Gateway') !== false){
  9. shell_exec($cmd);
  10. exit();
  11. }
  12. }
  13. ?>
复制代码
crontab 一分钟执行一次。 url和cmd根据自己的改。

原理就是用curl获取HTTP头,发现502状态码就执行重启php-fpm的命令。
作者: xtmp    时间: 2010-12-24 14:50
老大,这代码最后怎么有个?>
是不是多了,或者开头应该有个<?
作者: licess    时间: 2010-12-24 16:08
标题: 回复 2# 的帖子
已修正
作者: xtmp    时间: 2010-12-24 16:55
Parse error: syntax error, unexpected $end in /root/autorestartphp.sh on line 15

第15行就是最后一行只有一个?>

这是啥问题啊老大
作者: licess    时间: 2010-12-24 17:04
标题: 回复 4# 的帖子
可能是里面的一下符合,如‘ } 之类的成了中文下面的,检查一下看看。
作者: mmdmm    时间: 2010-12-24 17:36
请问 这代码放在哪???????????
作者: 智立更生    时间: 2011-1-24 10:15
原帖由 mmdmm 于 2010-12-24 17:36 发表
请问 这代码放在哪???????????


超级菜鸟同问。
作者: licess    时间: 2011-1-24 11:12
标题: 回复 7# 的帖子
crontab -e
作者: nobita215    时间: 2011-1-24 14:45
老大 用crontab -e 命令 编辑好内容后 如何保存并关闭呢。。
作者: xx2008    时间: 2011-1-24 22:51
esc
:
wq
作者: nobita215    时间: 2011-1-25 13:52
按 ESC?
然后按 :
再按 wq?
作者: mmdmm    时间: 2011-1-26 19:24

作者: zleicx    时间: 2011-3-31 11:47
标题: 回复 1# 的帖子
crontab中每分钟启动执行一次,这个命令怎么写?
作者: licess    时间: 2011-3-31 12:45
标题: 回复 13# 的帖子
*/1 * * * * 文件
作者: 智立更生    时间: 2011-9-5 10:58
标题: 回复 1# 的帖子
Do you want to retry the same edit? n
crontab: edits left in /tmp/crontab.XXXX1vmv68

出现这个是什么原因?

麻烦,能抽空回答下吗?谢谢了

[ 本帖最后由 智立更生 于 2011-9-5 11:53 编辑 ]
作者: yuweitaocn    时间: 2011-9-5 22:55
但是这一个不是长久之计啊。。。
作者: oldghost    时间: 2011-12-11 12:59
看来只能用这个脚本了,搜了很多关于502的没有彻底解决。
作者: oldghost    时间: 2011-12-11 19:46
军哥,我在你的脚本里加了一句记录log的语句echo $(date +"%Y-%m-%d %H:%M:%S") Find 502 Bad Gateway! >> /root/log/$(date +"%Y%m%d").log;,但是执行的时候显示错误“Parse error: syntax error, unexpected '(', expecting T_VARIABLE or '$' in /root/502.sh on line 11”,调试了好久也没搞定,麻烦看一下什么原因。另外为什么你这个脚本每个语句后面要加分号呢?谢谢。
  1. #!/usr/bin/php
  2. <!--?
  3. $url = 'https://www.vpser.net';
  4. $cmd = '/usr/local/php/sbin/php-fpm restart';

  5. for($i = 0; $i < 5; $i ++){
  6. $exec = "curl --connect-timeout 3 -I $url 2>/dev/null";
  7. $res = shell_exec($exec);

  8. if(stripos($res,'502 Bad Gateway') !== false){
  9. echo $(date +"%Y-%m-%d %H:%M:%S") Find 502 Bad Gateway! >> /root/log/$(date +"%Y%m%d").log;
  10. shell_exec($cmd);
  11. exit();
  12. }
  13. }
  14. ?>
复制代码

作者: licess    时间: 2011-12-11 21:50
标题: 回复 18# 的帖子
#!/usr/bin/php

php写的肯定要符合php的语法

$echo502='echo $(date +"%Y-%m-%d %H:%M:%S") Find 502 Bad Gateway! >> /root/$(date +"%Y%m%d").log';
shell_exec($echo502);
作者: oldghost    时间: 2011-12-12 00:35
原帖由 licess 于 2011-12-11 21:50 发表
#!/usr/bin/php

php写的肯定要符合php的语法

$echo502='echo $(date +"%Y-%m-%d %H:%M:%S") Find 502 Bad Gateway! >> /root/$(date +"%Y%m%d").log';
shell_exec($echo502);

谢谢军哥!
作者: yilin101    时间: 2011-12-13 13:57
标题: 回复 20# 的帖子
你这个带log的能用吗 我不行的
作者: fttbcm    时间: 2012-12-27 10:17
这个不错,收下了,很好很强大!
作者: id886    时间: 2013-2-22 10:18
但是这一个不是长久之计啊。。。   

得从根本解决起。

是环境问题,还是程序问题,还是VPS性能差…………



建议  升级到PHP5.3 提升 PHP处理性能。  

升到5.3后 把 php-fpm.conf  参数加大一倍,默认的太小了,别让这参数成为瓶颈。

这样操作后,你的VPS出502机率会大大降低。。     

信不信由你…………

[ 本帖最后由 id886 于 2013-2-22 10:22 编辑 ]
作者: liyucmh    时间: 2015-5-27 12:03
标题: 回复 23# 的帖子
请问参数具体怎么调整, 可以贴下吗




欢迎光临 VPS侦探论坛 (https://bbs.lnmp.com/) Powered by Discuz! X3.4