我用Nginx运行PHP-FPM。我的服务器上有各种不同的脚本。有时候,PHP代码存在问题,这个过程需要很长时间。这会消耗所有可用的PHP-FPM子项;因此,阻碍了其他PHP脚本。
我如何设置PHP-FPM日志以记录慢速php进程,因为我们监视慢速mysql查询,以检测哪个脚本导致问题?
答案 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
,则必须使用slowlogslowlog = log/$pool.log.slow
监视mysql查询我正在使用此查询来获取正在我的计算机上运行的查询列表
show full processlist;
答案 1 :(得分:2)
如何设置PHP-FPM日志
没有。使用nginx log_format以毫秒精度记录每个HTTP请求的持续时间。
因为我们监视慢的mysql查询
所以你已经根据频率和经过时间的乘积去掉了字面值和优先级?
答案 2 :(得分:1)
我一直在使用this class来分析和监控我自己的实用程序脚本。如果你没有反对Pear类的话,它运行正常。
您可以在代码中设置不同的计时器,并根据这些计时器返回的值进行操作。作为奖励,您可以获得每个计时器运行所需时间的文本或html概要分析输出。
希望有所帮助,祝你好运。
答案 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
)