性能测试-性能监控分析与调优(三)《实战》

性能监控

使用命令监控

cpu瓶颈分析
top命令

在进行性能测试时使用top命令,界面如下

上图可以看出

  • CPU 概况区: %Cpu(s):
    • us(用户进程占用CPU的百分比), 和 sy(系统进程占用CPU的百分比) 的数值很高说明cpu处于忙碌状态,
    • 且id(空闲CPU百分比)的值也比较高说明cpu的资源还比较足。
    • si(软件中断所消耗的CPU使用的百分比)只占用一点点

load average(负载平均值): 显示了1分钟、5分钟、15分钟的平均负载值。可以看出最近1分钟内发生了大量的负载

物理内存(Mem)和交换空间(Swap):

  • total:物理内存的总大小。
  • used:已使用的物理内存大小。
  • free:剩余的物理内存大小。
  • buff/cached:缓存的物理内存的大小占比

CPU使用率排序显示进程列表:

  • PID:进程ID,表示每个进程的唯一标识符。

根据上面进行分析可以得出改系统进行性能测试时,可以看出us比sy高很多,且cpu使用率排在前面的应用程序主要为java程序和数据库mysql
用户态比较高:

%us (或 %user):

这个参数表示 CPU 在用户态下执行应用程序代码的时间比例。如果这个值较高,说明用户态时间比例较高。

%id (或 %idle):

这个参数表示 CPU 空闲的时间比例。如果用户态时间比例高,通常 %id 的值会比较低,因为 CPU 没有太多空闲时间。

CPU 使用率:

在 top 命令的顶部,会显示总的 CPU 使用率,包括用户态、系统态、空闲等。如果用户态时间比例高,总的 CPU 使用率也会相应较高。

进程列表:

在 top 命令的进程列表中,可以看到每个进程的 CPU 使用情况,包括用户态和系统态时间。如果某个进程的用户态时间比例较高,可能需要进一步分析该进程的行为。

java程序也就是应用程序,它的使用率高,说明它的代码消耗的cpu比较多,需要分析代码问题 详见 > 分析定位代码问题

数据库服务器cpu用户态高:说明是 sql语句的逻辑很复杂。 sql要分析优化。

系统态比较高

%sy (或 %system):

这个参数表示 CPU 在内核态下执行系统代码的时间比例。如果这个值较高,说明系统态时间比例较高。

%id (或 %idle):

这个参数表示 CPU 空闲的时间比例。如果系统态时间比例高,通常 %id 的值会比较低,因为 CPU 没有太多空闲时间。

%wa (或 %iowait):

这个参数表示 CPU 等待 I/O 操作完成的时间比例。如果系统态时间比例高,并且 %wa 的值也较高,可能意味着系统正在进行大量的 I/O 操作,导致内核态时间增加。

%st (或 %steal):

这个参数只在虚拟化环境中出现,表示被管理程序(如虚拟机监控器)"偷走"的时间,用于为其他虚拟机提供服务。在非虚拟化环境中,这个值通常为 0。

CPU 使用率:

在 top 命令的顶部,会显示总的 CPU 使用率,包括用户态、系统态、空闲等。如果系统态时间比例高,总的 CPU 使用率也会相应较高。

进程列表:

在 top 命令的进程列表中,可以看到每个进程的 CPU 使用情况,包括用户态和系统态时间。如果某个进程的系统态时间比例较高,可能需要进一步分析该进程的行为。

要分析具体的原因,而不是直接找代码问题。

原因有很多很多情况:比较常见的------ 磁盘获取资源

分析定位代码问题:

获取线程栈定位代码 arthas

下载: 百度搜索 arthas软件下载,上传到项目所在的机器

bash 复制代码
wget https://arthas.aliyun.com/arthas-boot.jar;

启动arthas: 首先,要确认机器上有 java进程 java -jar arthas-boot.jar

bash 复制代码
java -jar arthas-boot.jar

找到 导致项目机器cpu的使用率最高的 java进程的id, 输入这个进程在arthas中对应编号, 回车自动去连接到你选择的java进程

我的这里先死是1

使用arthas:

获取帮助: help

查看线程栈: thread

thread -n 5 显示出cpu使用率最高的5个线程栈信息

展示信息如下:

根据展示的信息和项目信息寻找相关的日志


根据日志我们可以定位到java程序中的67行和73行的代码需要优化。

相关推荐
无尽的大道4 小时前
Java反射原理及其性能优化
jvm·性能优化
萌面小侠Plus8 小时前
Android笔记(三十三):封装设备性能级别判断工具——低端机还是高端机
android·性能优化·kotlin·工具类·低端机
人工智能培训咨询叶梓13 小时前
探索开放资源上指令微调语言模型的现状
人工智能·语言模型·自然语言处理·性能优化·调优·大模型微调·指令微调
CodeToGym15 小时前
Webpack性能优化指南:从构建到部署的全方位策略
前端·webpack·性能优化
无尽的大道15 小时前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化
superman超哥15 小时前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索
数据库·oracle·性能优化·dba
前端青山1 天前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
青云交1 天前
大数据新视界 -- 大数据大厂之 Impala 性能优化:应对海量复杂数据的挑战(上)(7/30)
大数据·性能优化·impala·数据分区·查询优化·海量复杂数据·经典案例
chusheng18401 天前
Python 爬取大量数据如何并发抓取与性能优化
开发语言·python·性能优化
XMYX-02 天前
MySQL 性能优化策略:提升响应速度与系统稳定性
mysql·性能优化