- 始终践行费曼学习法
- 理解系统知识原理
- 掌握性能分析工具
- 多实践,多思考,多提问
- 仅记录我的的学习记录,欢迎指点纠正
一、遇到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 个请求。性能
此次,咱们在第二个终端,将测试的并发请求数改为 5,同时把请求时长设置为 10 分钟(-t 600)。这样,当你在第一个终端使用性能分析工具时, Nginx 的压力仍是继续的。
继续在第二个终端运行 ab 命令:
pid查看进程
从新压测,而后在第一个终端运行 top 命令,持续观察一段时间(很重要),下图只是某个瞬间的状态:
perf 分析 CPU 性能事件
那么,怎么验证是否有大量的 stress 进程呢?既然 top、pidstat 工具没法解决问题,尝试 perf 工具吧,它能够用来分析 CPU 性能事件。以下:
# 记录性能事件,等待大约``15``秒后按 Ctrl+C 退出 $ perf record -g # 查看报告 $ perf report
确实,stress 占了全部 CPU 时钟事件的 67%。你还能够经过 enter 键展开 + 号位置,查看 stress 的调用栈详情