如何监控慢速PHP进程?

时间:2011-12-19 11:22:04

标签: performance logging php

我用Nginx运行PHP-FPM。我的服务器上有各种不同的脚本。有时候,PHP代码存在问题,这个过程需要很长时间。这会消耗所有可用的PHP-FPM子项;因此,阻碍了其他PHP脚本。

我如何设置PHP-FPM日志以记录慢速php进程,因为我们监视慢速mysql查询,以检测哪个脚本导致问题?

4 个答案:

答案 0 :(得分:6)

php-fpm支持php脚本的慢速日志记录功能

在你的php-fpm.conf中

你需要添加2个变量

request_slowlog_timeout和slowlog

根据php-fpm wiki

服务单个请求的超时,之后将进行PHP回溯 ;转储到'slowlog'文件。值“0”表示“关闭”。 ;可用单位:s(秒)(默认),m(inutes),h(我们的)或d(ays) ;默认值:0

request_slowlog_timeout = 30

缓慢请求的日志文件 ;默认值:未设置 ;注意:如果设置了request_slowlog_timeout

,则必须使用slowlog
slowlog = log/$pool.log.slow

监视mysql查询我正在使用此查询来获取正在我的计算机上运行的查询列表

show full processlist;

答案 1 :(得分:2)

  

如何设置PHP-FPM日志

没有。使用nginx log_format以毫秒精度记录每个HTTP请求的持续时间。

  

因为我们监视慢的mysql查询

所以你已经根据频率和经过时间的乘积去掉了字面值和优先级?

答案 2 :(得分:1)

我一直在使用this class来分析和监控我自己的实用程序脚本。如果你没有反对Pear类的话,它运行正常。

您可以在代码中设置不同的计时器,并根据这些计时器返回的值进行操作。作为奖励,您可以获得每个计时器运行所需时间的文本或html概要分析输出。

See the docs for more info

希望有所帮助,祝你好运。

答案 3 :(得分:1)

Appgati可能会有所帮助。

这不是一个彻头彻尾的问题解决方案,但可以提供一些有用的见解,了解滞后的位置。您可能正在丢失数据,或者在生成DOM时浪费时间。该脚本提供了可能被关注的潜在关注区域的天空视图。

在脚本中查找特定函数的性能也很方便。

示例输出:

Array
(
[Clock time in seconds] => 1.9502429962158
[Time taken in User Mode in seconds] => 0.632039
[Time taken in System Mode in seconds] => 0.024001
[Total time taken in Kernel in seconds] => 0.65604
[Memory limit in MB] => 128
[Memory usage in MB] => 18.237907409668
[Peak memory usage in MB] => 19.579357147217
[Average server load in last minute] => 0.47
[Maximum resident shared size in KB] => 44900
[Integral shared memory size] => 0
[Integral unshared data size] => 0
[Integral unshared stack size] => 
[Number of page reclaims] => 12102
[Number of page faults] => 6
[Number of block input operations] => 192
[Number of block output operations] => 
[Number of messages sent] => 0
[Number of messages received] => 0
[Number of signals received] => 0
[Number of voluntary context switches] => 606
[Number of involuntary context switches] => 99