Linux运维知识之nginx+php-fpm故障排查
小标 2019-03-15 来源 : 阅读 1052 评论 0

摘要:本文主要向大家介绍了Linux运维知识之nginx+php-fpm故障排查,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

本文主要向大家介绍了Linux运维知识之nginx+php-fpm故障排查,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

Linux运维知识之nginx+php-fpm故障排查

小明初到一家公司做运维的工作,刚来的第一天就开始部署LNMP(Linux+Nginx+MySQL+PHP)环境,结果出现了问题。


他来向我请教,具体问题现象、原因和解决思路如下:


问题一

nginx进程CPU和内存不均衡,某个进程占用资源特别高,如何解决?

回答:我让小明绑定下CPU的亲缘性(设置nginx配置worker_cpu_affinity项为auto,auto这个特殊值(1.9.10版本)允许自动绑定工作进程到可用的CPU上。),绑定后CPU和内存使用就均衡了。


问题二

小明又问close系统调用消耗很高怎么解决?


回答:且听我娓娓道来,继续看下文。


strace−cpstrace−cp(pgrep -n nginx)


$ top


系统32c的,top查看负载去到75.14,


查看过nginx和php-fpm的


错误日志也没有什么发现。


strace 跟踪close的系统调用,


都是以下的信息:


strace−T−ttpstrace−T−ttp(pgrep -n nginx) 2&>1 |grep -B 10 close > ./close.log


$ lsof | more


遂怀疑是连接创建关闭消耗了太多的资源,便让小明加了台机器专门跑nginx,

前端挂了个nginx用长连接跟后端的nginx连接,接了个nginx之后负载果然就下来了。


前端未挂nginx压测ab压测结果:


前端挂了nginx压测ab压测结果:


tps基本没变第一个Time per,requset快了87.52%。

接着继续排查tps上不去的原因,继续strace后端的nginx。


strace−cpstrace−cp(pgrep -n nginx)


发现现在是wrtiev占用高了,strace 跟踪close的系统调用,

发现很多以下的输出:


connect(26, {sa_family=AF_INET, 
sin_port=htons(9000),
sin_addr=inet_addr("127.0.0.1")},
16) = -1 EINPROGRESS
(Operation now in progress)


问题应该不是在nginx上,

应该是在php-fpm上了。

继续


strace−cpstrace−cp(pgrep -n php-fpm)


显示下图所示:


access cpu时间消耗最多那就先

排查access

系统调用:


strace−T−ttpstrace−T−ttp(pgrep -n php-fpm) 2&>1 |
grep -B 10 access >
./access.log


php-fpm进程频繁的去读取文件,整个操

作下来花费4ms的时间。


然后排查recvfrom:


strace−T−ttpstrace−T−ttp(pgrep -n 
php-fpm) 2&>1 |
grep -B 10 recvfrom >
./recvfrom.log


频繁的去访问10.0.0.156的6379,端口,明显就是访问redis读取数据的过程,

整个过程花费12ms。

让小明把上面两个strace信息发给开发,第一个得到回复是老版本的流程,

新版本改了,但还是有些判断没有处理。

第二个问题让开发使用redis连接池,无需频繁创建连接读取数据,

频繁创建连接开销很大的。


总 结

当遇上性能问题时,排查日志无法解决时,使用strace工具来查看一下系统调用,看时间到底消耗在哪里了,可以轻松的找到问题所在。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程