有没有一种简单的方法可以在服务器上的502网关超时后自动执行php-fpm重启?

时间:2013-11-01 11:02:29

标签: wordpress nginx timeout restart heartbeat

您是否有任何关于为使用Wordpress和nginx的大型网站安装心跳工具的有用链接,提示或脚本。如果有太多人在服务器关闭的同时访问该站点。发生这种情况后,我需要立即自动重启网站。

问候

1 个答案:

答案 0 :(得分:2)

您的问题是如何在502上重启PHP。我的第一个答案是试图阻止502首先发生。

  1. PHP可能消耗太多内存。我的猜测是你的php FCGI孩子的数量设置得太高了。在您的init脚本中,您应该有一个像PHP_FCGI_CHILDREN = 20或类似的条目来控制将启动的PHP进程的数量。我会尝试减少数量。如果您可以识别每个PHP进程的平均内存(可能使用top),那么您可以建立应该运行的最大PHP进程数。例如,如果您有一个2,000MB的服务器,并且您的PHP进程每个最多消耗100MB,那么您需要将它们限制为20个。

  2. 您可以创建另一个位置并使用@符号开始名称。 @符号用于“内部”位置。我喜欢使用nginx的http://openresty.org分布。它包括ngx_lua http://wiki.nginx.org/HttpLuaModule模块。 Lua是一种脚本语言,可以(除其他外)执行shell命令。例如:

    location / {
      error_page 502 = @php502error;
    }
    location @php502error {
      content_by_lua 'os.execute("/bin/restart-my-php-processes.sh")';
    }
    

    os.execute正在阻止,所以你要记住这一点......我听说有人设置thttpd来运行脚本。所以你在@ php502error位置使用proxy_pass。