性能分析(3)- 短时进程导致用户 CPU 使用率过高案例

性能分析小案例系列,可以通过下面链接查看哦

https://www.cnblogs.com/poloyy/category/1814570.html

 

系统架构背景

  • VM1:用作 Web 服务器,来模拟性能问题
  • VM2:用作 Web 服务器的客户端,来给 Web 服务增加压力请求
  • 使用两台虚拟机(均是 Ubuntu 18.04)是为了相互隔离,避免交叉感染

 

VM2 运行 ab 命令,初步观察 Nginx 性能

简单介绍 ab 命令

  • ab(apache bench)是一个常用的 HTTP 服务性能测试工具
  • 可以向目标服务器并发发送请求

 

运行 ab 命令

并发 100 个请求测试 VM1 的 Nginx 性能,总共测试 1000 个请求

ab -c 100 -n 1000 http://172.20.72.58:10000/

从 ab 的输出结果可以看到,Nginx 能承受的每秒平均请求数只有 145.68(有点差强人意)

 

那到底是哪里出了问题呢

接下来,我们将通过一系列的命令来观察哪里出问题了

 

通过命令分析 VM1 的性能问题

VM2 长时间运行 ab 命令

并发 5 个请求,持续并发请求 10min

ab -c 5 -t 600 http://172.20.72.58:10000/

 

接下来的命令都在 VM1 上执行

 

top 查看系统 CPU 使用率、进程 CPU 使用率、平均负载

top

结果分析
  • 平均负载已远超 CPU数量(2)
  • Nginx、docker、php 相关的进程总的 CPU 使用率大概 40%左右
  • 但是系统 CPU 使用率(us+sy)已达到 96%了,空闲 CPU(id)只剩下 3.7%

 

提出疑问

为什么进程所占用的 CPU 使用率并不高,但是系统 CPU 使用率和平均负载会这么高? 

 

回答疑问,分析进程列表
  • containerd-shim:运行容器的,3.3% 的 CPU 使用率挺正常
  • Nginx 和 php-fpm:运行 Web 服务的,占用的 CPU 使用率也才 5-6%  
  • 再往后就没有什么占用 CPU 使用率的进程了

 

嘶,发现 top 并没有满足我们的需求,看来得祭出另一个命令了

 

pidstat 查看是否有异常进程的 CPU 使用率过高

每秒取一次结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菠萝测试笔记

来支持下测试小锅锅

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值