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

有没有一种简单的方法可以在服务器上502网关超时后自动重新启动php fpm?,php,wordpress,nginx,timeout,restart,Php,Wordpress,Nginx,Timeout,Restart,你有没有关于为使用Wordpress和nginx的大型网站安装心跳工具的有用链接、提示或脚本。如果有太多人同时访问该站点,服务器将关闭。我需要一些东西来自动重新启动网站后立即发生 关于您的问题是如何在502上重新启动PHP。我的第一个答案是试图从一开始就阻止502的发生 PHP可能消耗了太多内存。我的猜测是,您的php FCGI子项数量设置得太高了。在init脚本中,应该有一个类似于PHP_FCGI_CHILDREN=20或类似的条目来控制将启动的PHP进程的数量。我会尽量减少这个数字。如果可以

你有没有关于为使用Wordpress和nginx的大型网站安装心跳工具的有用链接、提示或脚本。如果有太多人同时访问该站点,服务器将关闭。我需要一些东西来自动重新启动网站后立即发生


关于

您的问题是如何在502上重新启动PHP。我的第一个答案是试图从一开始就阻止502的发生

  • PHP可能消耗了太多内存。我的猜测是,您的php FCGI子项数量设置得太高了。在init脚本中,应该有一个类似于PHP_FCGI_CHILDREN=20或类似的条目来控制将启动的PHP进程的数量。我会尽量减少这个数字。如果可以确定每个PHP进程的平均内存(使用top),那么就可以确定应该运行的PHP进程的最大数量。例如,如果您有一个2000MB的服务器,并且您的PHP进程每个进程最多消耗100MB,那么您希望将它们限制为20个

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

    location / {
      error_page 502 = @php502error;
    }
    location @php502error {
      content_by_lua 'os.execute("/bin/restart-my-php-processes.sh")';
    }
    
    os.execute
    被阻塞,所以您需要记住这一点。。。我听说有人建立了一个thttpd来运行脚本。因此,您需要在@php502错误位置中传递代理


  • 我宁愿扩大安装规模,而不是在它失败时重新启动它。检查fpm配置文件,有一些关于失败后杀死的东西,不记得确切的是什么谢谢你们!我会考虑一下,做一些研究。啊,好的,谢谢。我将检查这些设置。但我仍然认为问题是,有时有太多人同时访问该网站。我们拭目以待;)理论上,这是个好主意。然而,Web服务器用户可能缺少重新启动服务的权限。。。