我有一台 VPS(4 核,6GB),运行 centos、nginx 和 php-fpm,流量很少(我从未发布过 url)。
每隔几周(在不同时间),php-fpm 终止,且 php-fpm.log 中仅显示以下内容:
[10-Nov-2015 04:14:48] NOTICE: Terminating ...
[10-Nov-2015 04:14:48] NOTICE: exiting, bye-bye!
目前 nginx error.log 或 php-fpm-error.log 中没有其他事件。
我还能在哪里找到此次终止的原因?
我可以配置任何东西以便下次发生这种情况时提供更多信息吗?
我可以配置 php-fpm 自动重启吗?
答案1
您可以使用 monit 及其PID 测试以便在 php-fpm 崩溃时重新启动,并可选择在崩溃时接收电子邮件。例如
set mail-format {
From: [email protected]
Subject: $HOST $SERVICE $EVENT | $DATE
}
set alert [email protected]
check process php_fpm pidfile /var/run/php5-fpm.pid
start program = "/etc/init.d/php5-fpm start"
stop program = "/etc/init.d/php5-fpm stop"
上面的内容是针对 Debian7 编写的,但您也可以将其调整为 CentOS。
答案2
您使用的是哪个版本的 PHP?您是否尝试过升级到最新版本?您是从 rpm/deb 安装的还是编译的?
你能检查一下当时是否有任何 cron 正在运行吗?
这通常是由 logrotate 尝试重新启动服务引起的。
无论如何,为了防止服务中断,您可以设置 monit 来检查服务是否正在运行,如果没有,则重新启动它。它还支持电子邮件通知,因此您会知道它。
答案3
PHP 进程在无限期运行时并不是特别可靠。您应该配置 php-fpm 以不时地重新启动工作进程。尝试更改
;pm.max_requests = 500
进入
pm.max_requests = 500
首先。这可能无法解决所有问题,因为您可能有其他配置问题,但更改 max_requests 是一个好的开始。我的服务器已经运行了几个月,没有任何停机时间。