如何追踪 php-fpm 终止的原因?

如何追踪 php-fpm 终止的原因?

我有一台 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 是一个好的开始。我的服务器已经运行了几个月,没有任何停机时间。

从这里

相关内容