CPU 性能监控指令
top 命令
- 基本功能:top 命令是 Linux 系统中最常用的性能监控工具之一。它可以实时显示系统中各个进程的资源占用情况,包括 CPU 使用率、内存使用量、进程状态等信息。在性能测试监控服务器性能时,通过 top 命令可以快速查看哪些进程在消耗大量的 CPU 资源。
- 示例用法:在终端中输入 “top” 后,会显示一个动态的进程列表。默认按照 CPU 使用率排序,第一行显示系统的整体信息,如当前时间、系统运行时间、登录用户数、系统负载(1 分钟、5 分钟、15 分钟的平均负载)等。后续行显示各个进程的详细信息,包括进程 ID(PID)、用户、优先级、虚拟内存大小、物理内存大小、共享内存大小、CPU 使用率、内存使用率等。例如,如果你发现一个 Java 进程的 CPU 使用率持续很高,可能表示这个进程对应的应用(如接口服务)在性能测试中占用了大量 CPU 资源,需要进一步分析其原因。
mpstat 命令
- 基本功能:mpstat 命令用于多处理器系统的 CPU 性能统计。它可以显示每个 CPU 核心的使用情况,包括用户态 CPU 使用率、内核态 CPU 使用率、空闲率等指标。在多核服务器上进行性能测试时,mpstat 命令可以帮助确定 CPU 负载是否均匀分布在各个核心上。
- 示例用法:“mpstat -P ALL” 命令可以显示所有 CPU 核心的统计信息。输出结果会包括每个核心的编号、用户使用率、nice 使用率(优先级调整后的用户使用率)、系统使用率、空闲率等。例如,如果发现某些核心的使用率过高,而其他核心使用率较低,可能表示应用没有充分利用多核优势,或者存在性能瓶颈导致任务集中在部分核心上。
vmstat 命令
- 基本功能:vmstat 命令主要用于报告虚拟内存统计信息以及系统的 CPU 活动情况。它可以提供关于内存、磁盘 I/O、CPU 上下文切换等更详细的数据,帮助分析 CPU 性能与其他系统资源之间的关系。
- 示例用法:“vmstat 1 5” 命令表示每秒输出一次系统状态信息,共输出 5 次。在输出结果中,“r” 列表示运行队列中的进程数,这个数值如果持续大于 CPU 核心数,可能表示 CPU 竞争激烈;“b” 列表示处于不可中断睡眠状态的进程数;“us” 列表示用户空间 CPU 使用率,“sy” 列表示内核空间 CPU 使用率。通过这些数据可以综合判断 CPU 的工作状态和性能瓶颈。
内存性能监控指令
free 命令
- 基本功能:free 命令用于显示系统内存的使用情况,包括总内存、已使用内存、空闲内存、共享内存、缓存和缓冲内存等信息。在性能测试中,通过 free 命令可以快速了解服务器的内存资源是否充足。
- 示例用法:输入 “free -h” 命令可以以可读的格式(如 KB、MB、GB)显示内存信息。输出结果中,“Mem” 行显示物理内存的情况,“Swap” 行显示交换分区(如果有)的情况。例如,如果 “free” 列的数值很小,而 “used” 列的数值很大,并且 “cached” 和 “buffers” 列也没有多少空间,可能表示服务器内存资源紧张,需要考虑增加内存或者优化应用的内存使用。
vmstat 命令(用于内存部分)
- 基本功能:前面提到 vmstat 命令也可以用于监控内存性能。它可以显示内存的交换情况(内存数据与磁盘交换分区之间的交换),这对于判断服务器是否存在内存不足的情况非常重要。
- 示例用法:在 vmstat 命令的输出结果中,“si” 列表示从磁盘交换到内存的字节数,“so” 列表示从内存交换到磁盘的字节数。如果这两个数值较大,说明系统正在频繁地进行内存交换,这会严重影响性能,因为磁盘 I/O 速度远远慢于内存访问速度。
磁盘 I/O 性能监控指令
iostat 命令
- 基本功能:iostat 命令用于监控系统的磁盘 I/O 情况,包括磁盘的读写速度、每秒读写次数、平均等待时间等指标。在性能测试中,如果接口服务涉及大量的磁盘读写操作(如数据库读写、文件存储等),iostat 命令可以帮助评估磁盘 I/O 是否成为性能瓶颈。
- 示例用法:“iostat -x 1 5” 命令表示每秒输出一次扩展的磁盘 I/O 统计信息,共输出 5 次。输出结果中,“r/s” 列表示每秒完成的读操作次数,“w/s” 列表示每秒完成的写操作次数,“rkB/s” 列表示每秒读的千字节数,“wkB/s” 列表示每秒写的千字节数,“await” 列表示平均每次 I/O 操作的等待时间。如果 “await” 数值较大,说明磁盘 I/O 存在延迟,可能是磁盘性能不足或者 I/O 请求过于密集。
iotop 命令
- 基本功能:iotop 命令类似于 top 命令,但是它主要用于监控磁盘 I/O 的进程级信息。它可以实时显示哪些进程在进行大量的磁盘读写操作,以及它们的读写速度。
- 示例用法:在终端中输入 “iotop” 后,会显示一个动态的进程列表,按照磁盘 I/O 使用率排序。第一行显示总的磁盘读写速度,后续行显示各个进程的详细信息,包括进程 ID、用户、I/O 优先级、读写速度等。通过 iotop 命令可以快速定位在性能测试中占用大量磁盘 I/O 资源的进程。
网络性能监控指令
netstat 命令
- 基本功能:netstat 命令用于显示网络连接、路由表、网络接口统计等信息。在性能测试中,可以使用它来查看服务器的网络连接状态,如当前有多少个连接、哪些端口处于监听状态等。
- 示例用法:“netstat -tuln” 命令可以显示所有 TCP 和 UDP 的监听端口。输出结果中,“Proto” 列表示协议类型(TCP 或 UDP),“Local Address” 列表示本地地址和端口,“Foreign Address” 列表示外部地址和端口(对于监听端口通常为 “0.0.0.0:” 或 “:::”),“State” 列表示连接状态(对于监听端口为 “LISTEN”)。通过这个命令可以检查接口服务是否在正确的端口上监听,以及是否有异常的网络连接。
sar 命令(用于网络部分)
- 基本功能:sar(System Activity Reporter)命令是一个系统活动报告工-具,它可以收集和报告各种系统资源的使用情况,包括网络。通过 sar 命令可以获取网络接口的流量统计信息,如每秒接收和发送的数据包数量、字节数等。
- 示例用法:“sar -n DEV 1 5” 命令表示每秒输出一次网络设备的统计信息,共输出 5 次。输出结果中,“IFACE” 列表示网络接口名称,“rxpck/s” 列表示每秒接收的数据包数量,“txpck/s” 列表示每秒发送的数据包数量,“rxkB/s” 列表示每秒接收的千字节数,“txkB/s” 列表示每秒发送的千字节数。通过这些数据可以评估服务器在性能测试中的网络负载和性能。