nginx+php-fpm报错故障解决方法-及排查流程

前言

现在NGINX越来越普及了、通过很多面板都可以简单搭建、小白都可以操作、但是出了问题、不知道如何下手、今天我们总结下教程

学派吧-小编初到一家公司做运维的工作,刚来的第一天就开始部署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)

nginx+php-fpm报错故障解决方法-及排查流程

$ top

nginx+php-fpm报错故障解决方法-及排查流程

系统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

nginx+php-fpm报错故障解决方法-及排查流程

$ lsof | more

nginx+php-fpm报错故障解决方法-及排查流程

遂怀疑是连接创建关闭消耗了太多的资源,便让学派吧-小编加了台机器专门跑nginx,
前端挂了个nginx用长连接跟后端的nginx连接,接了个nginx之后负载果然就下来了。

nginx+php-fpm报错故障解决方法-及排查流程

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

nginx+php-fpm报错故障解决方法-及排查流程

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

nginx+php-fpm报错故障解决方法-及排查流程

tps基本没变第一个Time per,requset快了87.52%。
接着继续排查tps上不去的原因,继续strace后端的nginx。

strace−cpstrace−cp(pgrep -n nginx)

nginx+php-fpm报错故障解决方法-及排查流程

发现现在是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)

显示下图所示:

nginx+php-fpm报错故障解决方法-及排查流程

access cpu时间消耗最多那就先
排查access
系统调用:

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

nginx+php-fpm报错故障解决方法-及排查流程

php-fpm进程频繁的去读取文件,整个操
作下来花费4ms的时间。

然后排查recvfrom:

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

nginx+php-fpm报错故障解决方法-及排查流程

频繁的去访问10.0.0.156的6379,端口,明显就是访问redis读取数据的过程,
整个过程花费12ms。
让学派吧-小编把上面两个strace信息发给开发,第一个得到回复是老版本的流程,
新版本改了,但还是有些判断没有处理。
第二个问题让开发使用redis连接池,无需频繁创建连接读取数据,
频繁创建连接开销很大的。

总 结

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

主题测试文章,只做测试使用。发布者:云大使,转转请注明出处:https://www.xp8.net/server/970.html

(0)
打赏 微信扫一扫 微信扫一扫
云大使的头像云大使
上一篇 2018年10月11日 下午2:30
下一篇 2018年10月11日 下午2:30

相关推荐

  • 介绍linux磁盘冗余阵列实例教程分析-学派吧

    如果您有服务器咨询问题、购买问题、可以联系我们客服 7271895 690624 商祺云-阿里代理、景安代理、西部代理 RAID防止硬盘物理损坏以及增加存储设备的吞吐量,RAID常见的组合有0、1、5、和10 RAID0:至少需要两块硬盘,可以有效提高硬盘的性能和吞吐量,但没有数据的冗余和错误修复能力 将多块硬盘通过硬件或软件的方式串联在一起,成为一个大的卷…

    服务器运维 2019年1月17日
    2.3K00
  • 购买阿里云ECS服务器后如何确认该服务器的IP信息和地理位置-linux运维

    本篇文章给大家带来的内容是关于购买阿里云ECS服务器后如何确认该服务器的IP信息和地理位置,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 IP地址查询定位 购买阿里云ECS服务器后,如果想确认该服务器的IP信息和地理位置,或需要查询本地公网IP信息,可以使用淘宝IP地址库进行查询。 1. 访问 ip.taobao.com 后,在页面左下侧,…

    服务器运维 2018年11月21日
    2.7K00
  • 在Linux下如何批量屏蔽恶意IP地址防攻击的案例教程-学派吧

    如果您有服务器咨询问题、购买问题、可以联系我们客服 7271895 690624商祺云-阿里代理、景安代理、西部代理 很多情况下,你可能需要在Linux下屏蔽IP地址。比如,作为一个终端用户,你可能想要免受间谍软件或者IP追踪的困扰。如果你是一名系统管理员,你可能想要禁止垃圾IP地址访问你们的公司邮件服务器。或者你因一些原因想要禁止某些国家访问你的web服务…

    服务器运维 2019年1月14日
    2.9K00
  • linxu服务器io带宽测试

    学派吧-受到客户需求。帮忙寻找一个linux服务器测试工具。今天特别找了几个测试工具、经常测试 把这个工具在分享下对于简单的测试手中的Linux VPS、服务器等信息还是有一点点参考比较价值用途的。第一、脚本下载地址1、官方地址 wget https://raw.githubusercontent.com/oooldking/script/master/su…

    2018年8月22日
    4.2K00
  • 宝塔数据库报错:ERROR! MySQL server PID file could not be found!

    问题描述 客户因给服务器清理日志、不清楚具体操作了什么 ,清理完成以后,数据库启动不了。报错如下: [root@VM-0-5-centos ~]# /etc/init.d/mysqld restartERROR! MySQL server PID file could not be found!Starting MySQL…. ERROR! Th…

    2021年7月21日
    3.5K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

工作时间:周一至周五,9:30-18:30,节假日休息

添加微信
添加微信
分享本页
返回顶部
---------官方优惠叠加渠道折扣:通过我们购买腾讯云/阿里云,价格更低,服务更优。更有专业配置指导与服务。微信同步:18838889666----