-
公司的业务是用PHP语言开发的,那么使用的环境十有八九就是LNMP。在日常的运维工作中,占到9成以上的故障是遇到性能问题。
你可能会想,我们的业务运行的好好的,为啥平白无故就出现性能问题?
原因有太多可能,比如代码改动、异常访问、网络波动、服务器硬件故障等等。
引起性能问题的原因有这么多,那如何定位呢?
给大家介绍一个性能追踪的方法,这个方法在我运维职业生涯里屡试不爽,帮了我不少大忙。 — slow log追踪 —
我们可以通过slow log很方便地追踪到问题点。先来看配置方法吧。
1)编辑配置文件
假设php安装路径为/usr/local/php,配置文件路径/usr/local/php/etc/php-fpm.conf)
# vim /usr/local/php/etc/php-fpm.conf #更改或增加两行内容slowlog = /data/logs/php-slow.logrequest_slowlog_timeout = 2
说明:slowlog定义日志路径和名字,request_slowlog_timeout定义超时时间,单位秒,即一个php脚本执行时间超过了该时间,则会记录日志。
2)重启php-fpm服务
具体重启命令,根据你自己的环境来决定。配置文件修改后,不重启或者不重载服务是不生效的。
3)测试
在测试站点里新建一个test.php文件,写入如下内容:
<?php echo “1”; sleep (5); echo “2”; 然后在浏览器里或者使用curl命令去访问
# curl http://ip/test.php 4)结果分析
访问test.php时,我们能感觉到它短暂卡死,大概5秒后出现结果。此时到/data/logs/php-slow.log里查看,有如下内容:
[pool www] pid 6368script_filename = /data/wwwroot/aminglinux.cc/test.php[0x00007ff8c821f090] sleep()
/data/wwwroot/aminglinux.cc/test.php:3 这个slow