性能测试中CPU风险诊断方法有哪些

CPU关键性能指标

1>CPU负载

什么是负载?简而言之就是CPU的任务数。系统的负载决定了系统繁忙程度,负载由CPU来处理,CPU的个数为定值,所以最大负载也为定值。当超出最大负载就会出现是无阻塞。CPU的负载实际上是由操作系统来组织的,我们可以通过命令top,vmstat来进行监控。

2>CPU利用率

当前主流Linux系统对于CPU资源的分配多数是采用时间片的方式。任务线程获取CPU时间片后,CPU开始处理任务,整个时间片的时间都由当前任务占有;这个时间片的中的CPU繁忙程度就是CPU的利用率,即这个时间片中CPU到底利用多少时间。

典型的场景有IO等待导致的CPU等待,叫做CPU非空闲等待,即申请到了时间片,没有充分的利用上。这种现象的监控CPU时可以获取,实际上是IO的性能风险。

在Linux中,CPU利用率还可以一分为二,分别是用户CPU利用率与系统系统CPU利用率。

用户CPU利用率:顾名思义就是用户占用的CPU利用率,即我们在主机上发布个应用程序,这个应用程序运行时占用的CPU利用率(%CPU)。

系统CPU利用率:字面来讲是操作系统在运行时占用的CPU,以维护整个主机的正常运行,协调资源。

例如,应用程序的IO请求由操作系统的API去操作磁盘,来自网络的请求由网卡中断告知操作系统,然后由CPU去处理。这些操作是在操作系统层面完成的,这些API的调用就叫作系统调用,占用的CPU资源就是系统CPU。

综上所述,我们从以下两个方面关注 CPU的性能风险。

CPU利用率。当%CPU>50%时,需要引起注意;当%CPU>70%时,就需要密切关注了,如果是测试,此时需要分析原因;当%CPU>90%时,就处于危险状态,此状态不应该成为一个常态,在测试时就必须分析原因了。

负载(load average),当load average>CPU核心数x1时,工作负载已经比较重了,需要分析原因;当load average>CPU核心数x2时,已经是高负载,需要排查原因。

定位方法

应用程序在运行时通常以进程或者线程的形态存在,Java语言开发的程序运行在VM(Java虚拟机)上,JVM 的一个实例是一个进程,进程中又有若干个线程,线程是处理任务的单位,IVM中以线程进行运算调度。线程需要申请内存空间(线程)来记录程序(函数的调用过程、存储变量(成员变量、内部变量)。所以我们可以通过分析线程栈的信息来了解当前线程的执行状态,执行到哪个方法、哪条语句等。所以我们可以有如下方式来分析CPU的性能问题。

1>找到 CPU 利用率大的进程。

2>找到这个进程中占CPU大的线程。

3>得到当前线程的栈信息。(线程快照)

4>分析程序的执行过程。

性能测试中的CPU风险诊断方法主要包括以下几个方面

监控和分析CPU使用率

使用工具如top、htop、mpstat等来监控CPU的使用情况。关注CPU使用率是否过高,以及是否存在单个进程占用过多CPU资源的情况。

分析CPU使用率趋势,了解在不同负载下的表现。

检查CPU队列长度

通过vmstat或sar命令查看系统的运行队列长度(run queue)。如果这个值长期超过CPU核心数量,则可能表明CPU过载。

评估上下文切换频率

使用vmstat命令中的cs字段来监测每秒发生的上下文切换次数。频繁的上下文切换可能是CPU瓶颈的一个迹象,也可能是高并发场景下的正常现象。

分析中断活动

查看/proc/interrupts文件以了解硬件中断(HI)和软件中断(SI)的数量。过多的中断处理可能会导致CPU使用率升高。

识别特定线程的CPU消耗

使用top -H或者pidstat -t找到最耗CPU的线程,并进一步调查这些线程正在执行的任务。对于Java应用,可以使用jstack生成线程转储并分析具体的线程堆栈信息。

深入代码级分析

对于应用程序级别的问题,可以通过AOP(面向切面编程)、日志记录或者其他调试手段追踪到具体的方法调用链路,找出热点函数或循环。

优化配置和服务

检查服务配置,例如调整JVM参数、数据库连接池大小等,确保它们被正确地设置以匹配工作负载。

如果是网络相关的软中断过高,检查网卡驱动程序版本和设置,考虑调整IRQ亲和性或关闭不必要的网络特性。

模拟真实用户行为进行压力测试

使用性能测试工具(如Apache JMeter, LoadRunner, Gatling等)模拟大量用户访问,观察系统在高并发条件下的CPU响应。

利用自动化脚本辅助诊断

编写脚本来自动化收集和解析上述提到的各种指标数据,帮助快速定位问题所在。

结合其他资源一起考量

CPU的问题有时候并非孤立存在的,还应该结合内存、磁盘I/O、网络等其他方面的性能指标综合判断,以便更准确地定位问题原因。

以上方法可以帮助你在性能测试中有效地诊断与CPU相关的风险,并采取适当的措施进行优化。

阅读后若有收获,不吝关注,分享,在看等操作!!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容