性能分析之快速分析从压力曲线到具体代码/配置_软中断

这几天没有写文章了,一是因为最近觉得没有什么新鲜的可以写;二是感觉自己会的都已经写完了呢。

今天再写一个分析思路的文章。


对于做性能分析的来说,快速定位的能力非常重要。层层剥离,不要跳跃。

最近在项目中看到不少人做性能问题的解决是全靠蒙的。比如疯狂加线程数什么的。


最近在测试的一个系统中出现了一个现象是这样的。(这次不打算再很细的一步步讲了,只说整体的思路,因为使用到的操作的手段在我之前的文章中都有说明)。

先看下几个图。

性能分析之快速分析从压力曲线到具体代码/配置_性能瓶颈_02

性能分析之快速分析从压力曲线到具体代码/配置_性能瓶颈_03

性能分析之快速分析从压力曲线到具体代码/配置_软中断_04

从上面的图就可以知道这个系统明显是有性能瓶颈(要是有人问为啥,我觉得肯定不是做性能的,哈哈)。

出现这种情况怎么办呢?当然是要知道后端的哪个地方有问题,于是,我查了每一个相关的系统,看到如下信息。

系统级别信息:

性能分析之快速分析从压力曲线到具体代码/配置_性能分析_05

性能分析之快速分析从压力曲线到具体代码/配置_性能瓶颈_06

性能分析之快速分析从压力曲线到具体代码/配置_性能分析_07

软中断,软中断,软中断。接着可以找应用的麻烦了。再接着看。切换到线程之后,就看到了如下这些东西。

性能分析之快速分析从压力曲线到具体代码/配置_性能分析_08

性能分析之快速分析从压力曲线到具体代码/配置_性能分析_09

性能分析之快速分析从压力曲线到具体代码/配置_性能分析_10

性能分析之快速分析从压力曲线到具体代码/配置_性能分析_11

然后呢,就是老思路了。打印栈信息,拿出来瞄一眼。

性能分析之快速分析从压力曲线到具体代码/配置_性能瓶颈_12

性能分析之快速分析从压力曲线到具体代码/配置_软中断_13

性能分析之快速分析从压力曲线到具体代码/配置_软中断_14

性能分析之快速分析从压力曲线到具体代码/配置_性能瓶颈_15

这个问题的原因,其实就是一个内存参数配置错误的问题。不提也罢。在性能问题中,有很多时候我们都在为这样的人为的过失折腾来折腾去。


本文就是为了说明这个分析的思路,所有用到的工具都在我之前的文章中提到了。


对于性能分析来说,思路的清晰比直接上手去做,要重要得多,重要得多得多。

不然我们就一直在不断地浪费自己和别人的时间。