博客 数栈运维案例:客户生产服务器 CPU 负载异常处理

数栈运维案例:客户生产服务器 CPU 负载异常处理

   小美   发表于 2023-02-02 15:17  258  0

一、问题背景

一天下午,大家都在忙着各自的事情,突然小组人员都同时收到了短信提醒,以为是公司发奖金了,很是开心,咋一看 “某某客户服务器 cpu 使用率 100%,请及时处理!” 原来是告警短信,同时看到钉钉群里发出了大量的告警信息……

二、故障回顾

告警提示”CPU 使用率到达 98%” ,打开阿里云控制台,通过云监控发现在下午 15:06-16:46 左右,云上机器某四台集群服务器 cpu 使用率波动较大(先降后升),负载过高,网络流量达到一定峰值就出现下降趋势,TCP 连接数先是出现下降趋势,后面出现上升状态。现象如下图:

 

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/691ef178dd6ec5427d956b1674a752c8..png

CPU 先降后升使用率情况:使用率接近 100%

 

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/e7167a5ec3c69a1e4127f2770511f165..png

系统平均负载先升后降情况:load 超过 40

 

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/2fb7efd75d79d11484749d981ebeaba2..png

网络流入流量:网络带宽流入流出先降后升

 

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/7d82f85454e97797c6ece5432b7253e3..png

TCP 连接数情况:先升后降

 

三、问题排查过程

1) nginx 日志排查

查看 nginx15:06-16:46 时间段的日志发现请求订单接口响应时间较长,超过 30s。如下图:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/ad1539a7e5217ee023c24509917560b4..png

2) 查看 fpm-php 日志

查看 fpm-php 日志,在 15:06-16:46 这个时间段中,fpm-php 子进程出现大量重启,如下图:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/30fa317cfbdb09859a64a086f52536eb..png

同时,nginx 错误日志中发现较多的 502,504 状态码,如下图:

Nginx 502 状态码:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/3662764e8dd5a774c0884129b5bb4542..png

Nginx 504 状态码:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/d6c811cc7b2c75857255c5ff8f6047a4..png

3) 问题定位分析

a. 从 fpm-php 对应的日志里发现大量的 fpm-php 子进程重启,原因是每个子进程接受的请求数达到设定值。

b. 在大量的 fpm-php 子进程重启过程中,如果有大量请求进来是无法响应的,所以 Nginx 收到大量的 502、504 报错。

c. 同时在大量的 fpm-php 重启时会消耗大量的 CPU load, PHP 不接受业务请求、不转发数据,服务器流量直线下降。

4) 处理结论

经过上述分析,最终定位确认是 fpm-php 子进程数配置太低,同时每个子进程接受的请求数 max_requests 设置太小。无法应对每天的流量高峰。

四、优化建议

根据服务器的 CPU / 内存配置,适当增加 children 的数量和 max_requests 的请求数。如下图,设置一个比较大的值。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/dc7a0de03505de1de3aa48b189c5f603..png

五、优化效果

1)增加 fpm-php 子进程数以及每个子进程接收的请求能减少 php 子进程大量重启频次;

2)可缓解业务高峰期对服务造成的压力,降低业务影响。

六、写在最后

基于互联网在线化方式,袋鼠云为客户提供云上网络和资源规划、应用架构规划、性能优化、监控告警、系统健康检查、业务大促护航、云上安全运营等全方位的专业运维服务,保障客户业务系统在云上稳定运行。


想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群