127.0.0.1:8088/pid.svg
DEMO:

文章插图
DEMO火焰图:

文章插图
9.4.2 off-CPUcpu过低,利用率不高 。等待下一轮CPU,或者等待I/O、锁、换页等等,其状态可以细分为可执行、匿名换页、睡眠、锁、空闲等状态 。
使用方式:
// off-CPU user
sh ngx_off_cpu_u.sh pid
//进入结果目录
cd ngx_off_cpu_u
//off-CPU kernel
sh ngx_off_cpu_k.sh pid
//进入结果目录
cd ngx_off_cpu_k
//开一个临时端口8088
python -m SimpleHTTPServer 8088
//打开浏览器输入地址
127.0.0.1:8088/pid.svg
官网DEMO:

文章插图
9.5 内存级别火焰图
如果线上程序出现了内存泄漏,并且只在特定的场景才会出现 。这个时候我们怎么办呢?有什么好的方式和工具能快速的发现代码的问题呢?同样内存级别火焰图帮你快速分析问题的根源 。
使用方式:
sh ngx_on_memory.sh pid
//进入结果目录
cd ngx_on_memory
//开一个临时端口8088
python -m SimpleHTTPServer 8088
//打开浏览器输入地址
127.0.0.1:8088/pid.svg
官网DEMO:

文章插图
9.6 性能回退-红蓝差分火焰图你能快速定位CPU性能回退的问题么?如果你的工作环境非常复杂且变化快速,那么使用现有的工具是来定位这类问题是很具有挑战性的 。当你花掉数周时间把根因找到时,代码已经又变更了好几轮,新的性能问题又冒了出来 。主要可以用到每次构建中,每次上线做对比看,如果损失严重可以立马解决修复 。
通过抓取了两张普通的火焰图,然后进行对比,并对差异部分进行标色:红色表示上升,蓝色表示下降 。差分火焰图是以当前(“修改后”)的profile文件作为基准,形状和大小都保持不变 。因此你通过色彩的差异就能够很直观的找到差异部分,且可以看出为什么会有这样的差异 。
使用方式:
cd quick_location
//抓取代码修改前的profile 1文件
perf record -F 99 -p pid -g -- sleep 30
perf script > out.stacks1
//抓取代码修改后的profile 2文件
perf record -F 99 -p pid -g -- sleep 30
perf script > out.stacks2
//生成差分火焰图:
./FlameGraph/stackcollapse-perf.pl ../out.stacks1 > out.folded1
./FlameGraph/stackcollapse-perf.pl ../out.stacks2 > out.folded2
./FlameGraph/difffolded.pl out.folded1 out.folded2 | ./FlameGraph/flamegraph.pl > diff2.svg
DEMO:

文章插图

文章插图

文章插图
DEMO红蓝差分火焰图:

文章插图
10. 案例分析10.1 接入层Nginx集群异常现象通过监控插件发现在2017.09.25 19点nginx集群请求流量出现大量的499,5xx状态码 。并且发现机器cpu使用率升高,目前一直持续中 。
10.2 分析nginx相关指标a) ****分析nginx请求流量:

文章插图
结论:
通过上图发现流量并没有突增,反而下降了,跟请求流量突增没关系 。
b) ****分析nginx响应时间

文章插图
结论:
通过上图发现nginx的响应时间有增加可能跟nginx自身有关系或者跟后端upstream响应时间有关系 。
c) ****分析nginx upstream响应时间

文章插图
结论:
通过上图发现nginx upstream 响应时间有增加,目前猜测可能后端upstream响应时间拖住nginx,导致nginx出现请求流量异常 。
10.3 分析系统cpu情况a) ****通过top观察系统指标
top

文章插图
结论:
发现nginx worker cpu比较高
b) ****分析nginx进程内部cpu情况
perf top -p pid
推荐阅读
- 淘宝的促销活动有哪些 淘宝优惠促销什么意思
- 34岁程序员面试被拒,HR:只招30岁以下,活好能加班工资又少的人
- 茉莉苞茶的功效与禁忌,玳玳花主要的功效作用以及禁忌
- 什么牌子的金银花茶比较好,金银花茶的作用
- 买电脑的时候,一定要绕过这8个坑!
- 美容养颜润肤的健康花草茶,品饮花草茶
- 最赚钱的十大网站创业方向
- PHP中的traits使用详解
- 如何快速安全的插入千万条数据?
- Ubuntu 上 Wireshark 的安装与使用
