使用 PHP-fpm 的慢执行日志 slow_log 来分析 PHP 性能问题
如果你是一个资深的 PHP 工程师,你一定在有些情景下使用过 PHP 的 error_log 方法。但是,PHP 没有提供一种发现脚本执行慢原因的方法。执行慢的脚本不会破坏你的网站,但它会使一切减慢。使用 FPM,我们能够为执行慢的脚本提供 slow_log。接下来让我们一起了解如何使用这些日志来调试和分析 PHP 脚本执行效率。我们也会顺便了解到在 FPM 和 Nginx 运行之后 PHP 的 error_log
将如何被转发处理的。
为 PHP 脚本设置慢日志
打开... vim /etc/php5/fpm/pool.d/www.conf
,参考下面的例子做配置:
slowlog = /var/log/php5/slow.log
request_slowlog_timeout = 10s
你可以把 10s 改成其他值。 它可以帮助我们找到执行缓慢的脚本。 调整图像尺寸的方法, 网络 I/O 相关的一些功能都经常出现在 PHP 慢日志中。你可以根据自己的情况来选择调整或者忽略。
为 PHP 设置 error_log
当使用 FPM 解析运行中的 PHP,我们能够覆盖 php.ini 中关于 FPM 的任何设置。打开。。。vim /etc/php5/fpm/pool.d/www.conf
滑动滚动条到文件的底部,然后取消注释/更改与下面 3 行所匹配配置项的值:
php_admin_value[error_log] = /var/log/php5/error.log
php_admin_flag[log_errors] = on
需要注意的是,开启 display_errors
可能会破坏基于 ajax 的应用程序。因此,开启时要非常小心。
Nginx 用户须知
你可能会找不到 /var/log/php5/error.log
日志文件或者在日志文件中没有任何错误信息。站点中由 PHP 脚本产生的错误信息将会被记录在 nginx 的 error_log
中(nginx 的 error_log
可以在 nginx 配置文件中指定)。最有可能是 :/var/www/example.com/logs/error.log
文件(如果你没有为站点具体指定任何 error_log
的路径,PHP 的错误信息将会被写入 Nginx 的默认 error_log 中。最有能是 /var/log/nginx/error.log
文件)你可以 在这里找到有关使用Nginx进行调试的更多细节。
设置 FPM 错误日志方便调试
FPM 是一个独立的进程。在运行时难免会出错! FPM 的错误日志默认启动,我们只需要修改它存放的路径 。 打开... vim /etc/php5/fpm/php-fpm.conf
修改 error_log
的值:
error_log = /var/log/php5/fpm.log
值得一提的是这儿的 error_log 与之前描述的 PHP error_log
函数无关。
确认变更...
创建一个名为 php5 的日志文件来存放所有的 php 日志:
mkdir /var/log/php5/
重启 PHP-FPM 使修改生效...
service php5-fpm restart
监听日志文件
在服务器上,我们一般打开 shell 用 tail -f
命令来监听日志文件的运行状态... 因为我们有多个需要监听的日志文件,你可以使用下面的命令...
tail -f /var/log/php5/*.log
slow_log
可以帮助我们定位到运用程序里的瓶颈。
切记 调试结束后,务必将其关闭。让它持续运行并不是一个好主意。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: