加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

Linux问题故障定位,看这一篇就够了

发布时间:2019-04-02 18:21:01 所属栏目:Windows 来源:Lucien_168
导读:副标题#e# 1. 背景 有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源。这时候就需要登录服务器进一步深入分析问题的根源。那么分析问题需要有一定的技术经验积累,并且有些问题涉及到的领域非常广,才能定位到问题。所以,分析问题和踩

通过抓取了两张普通的火焰图,然后进行对比,并对差异部分进行标色:红色表示上升,蓝色表示下降。 差分火焰图是以当前(“修改后”)的profile文件作为基准,形状和大小都保持不变。因此你通过色彩的差异就能够很直观的找到差异部分,且可以看出为什么会有这样的差异。

使用方式:

  1. cd quick_location 
  2.  
  3. //抓取代码修改前的profile 1文件 
  4. perf record -F 99 -p pid -g -- sleep 30 
  5. perf script > out.stacks1 
  6.  
  7. //抓取代码修改后的profile 2文件 
  8. perf record -F 99 -p pid -g -- sleep 30 
  9. perf script > out.stacks2 
  10.  
  11. //生成差分火焰图: 
  12. ./FlameGraph/stackcollapse-perf.pl ../out.stacks1 > out.folded1 
  13. ./FlameGraph/stackcollapse-perf.pl ../out.stacks2 > out.folded2 
  14. ./FlameGraph/difffolded.pl out.folded1 out.folded2 | ./FlameGraph/flamegraph.pl > diff2.svg 

DEMO:

  1. //test.c 
  2. #include <stdio.h> 
  3. #include <stdlib.h> 
  4.  
  5. void foo3() 
  6.  
  7. void foo2() 
  8.   int i; 
  9.   for(i=0 ; i < 10; i++) 
  10.        foo3(); 
  11.  
  12. void foo1() 
  13.   int i; 
  14.   for(i = 0; i< 1000; i++) 
  15.      foo3(); 
  16.  
  17. int main(void) 
  18.   int i; 
  19.   for( i =0; i< 1000000000; i++) { 
  20.       foo1(); 
  21.       foo2(); 
  22.   } 
  23.  
  24. //test1.c 
  25. #include <stdio.h> 
  26. #include <stdlib.h> 
  27.  
  28. void foo3() 
  29.  
  30. void foo2() 
  31.   int i; 
  32.   for(i=0 ; i < 10; i++) 
  33.        foo3(); 
  34.  
  35. void foo1() 
  36.   int i; 
  37.   for(i = 0; i< 1000; i++) 
  38.      foo3(); 
  39.  
  40. void add() 
  41.   int i; 
  42.   for(i = 0; i< 10000; i++) 
  43.      foo3(); 
  44.  
  45. int main(void) 
  46.   int i; 
  47.   for( i =0; i< 1000000000; i++) { 
  48.       foo1(); 
  49.       foo2(); 
  50.       add(); 
  51.   } 

DEMO红蓝差分火焰图:

10. 案例分析

10.1 接入层nginx集群异常现象

通过监控插件发现在2017.09.25 19点nginx集群请求流量出现大量的499,5xx状态码。并且发现机器CPU使用率升高,目前一直持续中。

10.2 分析nginx相关指标

a) **分析nginx请求流量:

结论:

通过上图发现流量并没有突增,反而下降了,跟请求流量突增没关系。

b) **分析nginx响应时间

结论:

通过上图发现nginx的响应时间有增加可能跟nginx自身有关系或者跟后端upstream响应时间有关系。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读