为什么PHP-FPM需要5分钟才能在我的服务器上重新启动?

为什么PHP-FPM需要5分钟才能在我的服务器上重新启动?,php,fastcgi,Php,Fastcgi,我使用的是带有默认设置的PHP-FPM。我的服务器正在运行最新的Arch Linux 我发出命令sudo systemctl restart php fpm,重启并返回提示符需要五分钟 这个问题有已知的解决方案吗?这是由PHP-FPM的systemctl脚本的创建方式引起的。我也有同样的问题。下面是我如何解决的 首先找到您的启动脚本,如果您不知道您可以执行systemctl status php fpm,您将看到类似于:/etc/systemd/system/php.service的内容 现在编

我使用的是带有默认设置的PHP-FPM。我的服务器正在运行最新的Arch Linux

我发出命令sudo systemctl restart php fpm,重启并返回提示符需要五分钟


这个问题有已知的解决方案吗?

这是由PHP-FPM的systemctl脚本的创建方式引起的。我也有同样的问题。下面是我如何解决的

首先找到您的启动脚本,如果您不知道您可以执行
systemctl status php fpm
,您将看到类似于:/etc/systemd/system/php.service的内容

现在编辑此文件,它应该如下所示:

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=notify
PIDFile=/run/php-fpm/php-fpm.pid
PrivateTmp=true
ExecStart=/usr/bin/php-fpm --nodaemonize --pid /run/php-fpm/php-fpm.pid
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target
将其更改为:

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
ExecStart=/usr/bin/php-fpm --nodaemonize
ExecReload=/bin/kill -HUP $MAINPID
Restart=always

[Install]
WantedBy=multi-user.target
如果文件已更改,请运行此命令以刷新systemctl->
systemctl守护程序重新加载

现在重新启动FPM。我建议在更改此文件之前先关闭FPM。一旦做出更改,FPM将立即启动/停止/重新启动


现在我还不知道为什么,但有时在我做了这个更改之后,FPM似乎仍然需要永远的时间来启动/停止/重新启动。所以我只是继续重新启动我的机器,从那时起,它是即时的。所以我猜我还没有找到什么悬而未决的问题,但是重启解决了这个问题。我知道您不必重新启动,但在我找到它的确切挂起位置之前,这就解决了问题。

检查init脚本,在发送killal之前,您可能有5分钟的超时时间,这可能意味着您在第一次停止后仍有一个正在运行的php fpm守护进程。给我们一些关于该系统的详细信息(例如ps auxf | grep php、configs等)