【人间995】【Linux性能优化】系统的 CPU 使用率很高,却找不到高 CPU 的应用?

哔前哔言

  • 始终践行费曼学习法
  • 理解系统知识原理
  • 掌握性能分析工具
  • 多实践,多思考,多提问
  • 仅记录我的的学习记录,欢迎指点纠正

一、总结

一、遇到CPU使用率高,但又没法经过top定位到某个进程时,须要考虑是否短时应用所致使php

      如:一、应用自己问题,致使反复重启nginx

              二、应用经过exec 调用了其余二进制程序,这些程序运行时间比较短docker

二、使用top工具查看CPU时,须要同时关注其余参数,好比,运行的进程数,Tasks,%cpuubuntu

三、execsnoop专为短时程序设计的工具,经过ftrace来实时监控exec()行为并发

四、经过此次练习,也对docker进行一些简单命令操做curl

docker ps -a  // 查看当前全部的容器
docker images  // 全部的镜像
docker rm containId // 删除对应的容器
docker cp  XXX 复制php-fpm

二、案例实践

其中一台虚拟机A安装nginx 和PHP应用工具

$ docker run --name nginx -p``10000``:``80``-itd feisky/nginx:sp
$ docker run --name phpfpm -itd --network container:nginx feisky/php-fpm:sp

在另外一台的机器B上,使用 curl 访问 http://[VM1 的 IP]:10000,确认 Nginx 已正常启动oop

## 虚拟机A的IP:192.168.153.132
curl http://192.168.153.132:10000/
It works!jasen@ubuntu:~$ ab -v

经过使用ab工具,模拟并发 100 个请求测试 Nginx 性能,总共测试 1000 个请求。
图片.png性能

此次,咱们在第二个终端,将测试的并发请求数改为 5,同时把请求时长设置为 10 分钟(-t 600)。这样,当你在第一个终端使用性能分析工具时, Nginx 的压力仍是继续的。

继续在第二个终端运行 ab 命令:
图片.png

pid查看进程
图片.png

从新压测,而后在第一个终端运行 top 命令,持续观察一段时间(很重要),下图只是某个瞬间的状态:
图片.png

perf 分析 CPU 性能事件

那么,怎么验证是否有大量的 stress 进程呢?既然 top、pidstat 工具没法解决问题,尝试 perf 工具吧,它能够用来分析 CPU 性能事件。以下:

# 记录性能事件,等待大约``15``秒后按 Ctrl+C 退出
$ perf record -g
# 查看报告
$ perf report

图片.png
确实,stress 占了全部 CPU 时钟事件的 67%。你还能够经过 enter 键展开 + 号位置,查看 stress 的调用栈详情
图片.png

相关文章
相关标签/搜索