#yyds干货盘点# 性能问题分析策略
Posted SummerStone
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# 性能问题分析策略相关的知识,希望对你有一定的参考价值。
分析被测应用类型
首先笔者认为在做性能分析甚至在做性能测试之前,我们必须要做或者明确的一点是被测的应用或者系统的类型。当然了,可能 有人觉得被测应用划分有多个维度,我们要怎么划分。确实系统可以从不同的多个维度进行划分或者归类。但是在做性能问题分析时,系统的类型一般是资源消耗方面划分的。如下:
从上图中可以发现,一般来说系统可以分为CPU/IO密集型,然后确定了类型之后,我们就可以有一个比较好分析问题的方向了。
如何做性能分析
性能分析大家都知道,有时候不是那么容易,但是它还是总是有一些套路或者方法可以遵循的。如下将会一些和性能问题分析相关的一些干货。
CPU问题分析
- 首先了解CPU相关的基本信息, 在Linux系统(CentOS)下,可以使用如下命令,命令执行结果如下图,其中Architecture:是用的x86的架构并且是64位;CPU的核心数是4;CPU核心的频率是2300MHz;
lscpu
- vmstat命令,此命令是比较常用过的Linux监控软件/工具,可以监控CPU使用率,内存使用,虚拟内存交换情况或者IO状态等。在使用过程中需要设定两个参数一个是间隔时间设定,另外一个是取样次数,如下图是vmstat命令执行的结果,表示每2秒钟取样一次,总共取样50次。
- 其中r表示当前的排队的线程;
- b表示阻塞的进程数;
- swpd表示已使用的虚拟内存的大小,一般是0,如果>0,表示机器的物理内存不足了,可以查看为什么物理内存不足,是不是有内存泄漏,如果没有,可能就要考虑加大内存或者将耗内存进程转移到其他物理机上;
- free表示空闲的物理内存大小;
- buff主要是系统占用,一般是权限缓存,目录内容等;
- cache是记录打开的文件,给文件做缓冲;
- si表示每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用了
- so表示每秒虚拟内存写入磁盘的大小,如果这个值大于0,也表示物理内存不够用了
- bi表示块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,可以用来监控IO活动情况,比如有文件流传输等;
- bo表示块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。如果bo或者bi值过大,那么就需要调整,说明IO压力过大。
- in表示每秒cpu中断次数
- cs表示每秒钟上下文切换次数,这个值越小越好,如果过大的话,表面CPU时间干正事的时间就少了,这可能会造成一个性能问题,需要去关注的。
- us表示用户cpu时间
- sy表示系统cpu时间,如果过高表示系统调用时间长,IO操作频繁也可能导致系统调用时间长
- id表示空闲cpu时间
- wa值越高,表示IO等待越严重,此时需要对IO操作进行优化
总结:以上是对性能问题分析中,首先我们要做的事情是对被测系统进行分类,找出我们分析的大方向,其实和大家分享了CPU分析监控的一些方法或手段,希望对大家有帮助,后续会继续分析性能问题分析相关文章,请大家多关注。
以上是关于#yyds干货盘点# 性能问题分析策略的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点#SecurityContextHolder之策略模式源码分析
#yyds干货盘点#愚公系列2023年02月 .NET/C#知识点-程序运行计时的总结