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

hgb9j2n6  于 2022-12-17  发布在  PHP
关注(0)|答案(2)|浏览(82)

你有任何有用的链接,提示或脚本有关安装心跳工具,使用WordPress和nginx的更大的网站。如果太多的人访问该网站在同一时间服务器关闭。我需要一些自动重启网站后,立即发生。
问候

t40tm48m

t40tm48m1#

您的问题是如何在502上重新启动PHP。我的第一个答案是首先尝试防止502发生。
1.可能是PHP消耗了太多的内存。我猜是你的php FCGI子进程的数量设置得太高了。在你的init脚本中你应该有一个类似PHP_FCGI_CHILDREN=20的条目或者类似的条目来控制将要启动的PHP进程的数量。我会尝试减少这个数量。如果你能确定每个PHP进程的平均内存(也许使用top),然后你可以设置PHP进程的最大运行数量。例如,如果你有一个2, 000 MB的服务器,而你的PHP进程每个最多消耗100 MB,那么你需要将它们限制在20个。
1.您可以创建另一个位置,并以@符号开始名称。@符号用于“内部”位置。我喜欢使用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。

s8vozzvw

s8vozzvw2#

虽然kaicurry是正确的,但是您应该编辑您的php.ini文件,希望能够解决问题的根源;来回答你的问题
1.编辑php-fpm.service文件。例如,键入nano /lib/systemd/system/php-fpm.service
1.在[Service]的底部添加以下两行:
Restart=on-failure
RestartSec=5s
1.重新启动systemctl:systemctl daemon-reload .
Php现在会在失败时自动重启。你应该偶尔检查一下日志以确保它不会经常失败。
您可能也希望对nginx执行相同的操作:/lib/systemd/system/nginx.service

相关问题