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
fastcgi分离和lamp虚拟主机部署wordpress和discuzx教程
下一篇 2018年10月11日 下午2:30

相关推荐

  • 腾讯云代理使用标准登录方式登录 Linux 实例-新云

    操作场景 以下视频介绍了如何登录 Linux 实例: WebShell 为腾讯云推荐的登录方式。无论您的本地系统为 Windows,Linux 或者 Mac OS,只要实例购买了公网 IP,都可以通过 WebShell 登录。 本文介绍如何使用标准登录方式(WebShell)登录 Linux 实例。WebShell 优点如下: 支持快捷键复制粘贴。 支持鼠标…

    2020年9月23日
    2.6K00
  • 总结关于文件说明注意点-linux教程

    如果您有服务器咨询问题、购买问题、可以联系我们客服 7271895 690624商祺云-阿里代理、景安代理、西部代理 一、/etc/hosts>man hosts1、作用: 主机名查询静态表;主要用于IP地址与计算机主机名之间的转换。/etc/hosts文件格式,每行表示一个IP地址;每行由三部分构成:IP_address canonical_host…

    服务器运维 2019年1月14日
    3.2K00
  • 关于ubuntu下安装完PHP+Apache后,无法解析php的解决方案-Linux运维日志

    有需要服务器方面的需求,可以联系博主QQ 7271895(收费) 安装完之后,html文件可以正常解析,php源码直接输出,不能被解析。 通常情况下是apache未加载php模块,通常情况下需要修改httpd.conf文件,但是在ubuntu下为apache2.conf文件 修改如下: 设置 LoadModule php5_module /usr/lib/a…

    服务器运维 2018年9月30日
    3.6K00
  • 在Linux上为用户设置Http代理教程-学派吧

    为了提高安全性,大多数组织、公司和机构使用网络上的代理服务器访问互联网。使用代理服务器,可以根据需要限制每个用户的访问级别。在本篇文章中,我们将介绍如何在只有终端访问权限的情况下为Linux中的用户启用HTTP代理。 启用HTTP代理 登录到要为其启用HTTP代理的Linux系统上的用户。现在在home目录中编辑.bashrc或.bash_概要文件,并在文件…

    2019年3月23日
    3.1K00
  • 他们将生产环境从 nginx 迁移到 envoy教程

    选择代理 克服反对意见 服务提供方的好处 可扩展性 服务使用方的好处 更丰富的群集模型 多协议支持 动态服务发现 网络策略 监测 如何更快迁移 导读:随着Service Mesh在最近一年进入人们的视野,Envoy 作为其中很关键的组件,也开始被广大技术人员熟悉。本文作者所在公司已经从 nginx 迁移到 Envoy。 随着我们下一代产品发布,我们将代理软件…

    服务器运维 2018年10月16日
    4.7K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

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

添加微信
添加微信
分享本页
返回顶部