设为首页 收藏本站
查看: 1272|回复: 0

[经验分享] 利用php-fpm的慢日志定位故障

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-2-2 09:00:58 | 显示全部楼层 |阅读模式
今天上午,开发小哥向我反映一台开发机访问时速度非常慢,让我帮他找一下原因,然后我就开始了一个排错的过程,当时我的思路是这样的:判断网络是否有问题,判断开发机资源是否耗尽,判断各服务是否正常运行,判断代码问题。
    网络问题较为简单了,ping一下,traceroute一下,发现没有问题,网络很正常。排除了网络问题以后就要判断是否是服务器资源耗尽了,然后我ssh登陆到开发机上,使用top命令,看到的结果如下:
wKioL1TK9W-julpvABOEYlje2PM270.jpg
从这个结果来看,服务器资源还是很富裕的,问题不在这里。那接下来就要查找是不是各服务的问题了。

    访问速度慢,最大的可能是缓存的问题,memcached是否挂了,memcached的内存是否够用,于是,我先查看了一下memcached的运行状态,发现其运行十分正常,然后又重新启动并增加了memcached的内存,但是访问速度依然很慢,看来故障并不是在这里,接着排错。
    既然不是缓存的问题,那我又在想,会不会是php进程开启的少了呢?然后我查了一下php的进程池:
wKioL1TK-bfwIVVvABEAyyGuH6U065.jpg 从结果我们也可以看出来,php的进程是很多的,基本排除了php进程问题,那现在我的排错就进入了一个瓶颈,这时就感到自己知识的馈乏性了,最后还是在大牛的提醒下,让我查一下php的慢日志。由于本屌是一个新手,经验与技术都有所欠缺,所以对慢日志并没有多大的映像,毕竟在自己学习的过程中是很少用到这个日志的。
    既然查找慢日志,那么我做的第一步是开启php-fpm的慢日志功能,在php-fpm.conf配置文件中找到如下两条配置:
1
2
3
4
5
6
7
8
9
; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
request_slowlog_timeout = 5
; The log file for slow requests
; Default Value: not set
; Note: slowlog is mandatory if request_slowlog_timeout is set
slowlog = /var/log/php-fpm/www-slow.log



其中,request_slowlog_timeout = 5 这条配置表示,将执行时间超过5秒的php进程记录进入慢日志,为什么要设置为5秒呢?这是因为我查看了我网页的请求时间,响应时间大概在13秒左右;
slowlog = /var/log/php-fpm/www-slow.log 这条配置指定慢日志的位置。
    开启慢日志后,使用命令tail -F /var/log/php-fpm/www-slow.log来实时动态的查看日志内容,同时再继续访问该服务器,然后发现,在慢日志的输出中,有多个函数的执行时间超过了5秒,看来问题就出在这里了。然后我找了开发人员,反映了这个执行较慢的脚本和函数,经过他们的查找,发现是代码中有一个配置没有更新导致的,修改代码后问题解决。
    从这个运维事件中,我又积累到了一些实际生产环境中的运维经验,这一点是我值得记录的地方,可能这篇文章在许多大牛的眼里就是渣渣,但解决这个问题的过程与经验对于我来说是真正的宝贵财富,我也相信,只要我一点一滴的记录、积累,我也会变成一只大牛的。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-41835-1-1.html 上篇帖子: PHP添加SOAP模块 下篇帖子: PHP之printf
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表