1. 首页 > IT综合教程 > 正文

it教程FG298-系统性能分析工具详解

1. CPU性能分析工具

CPU是系统性能的核心组件,分析CPU性能对于排查系统瓶颈至关重要。更多学习教程www.fgedu.net.cn

1.1 top命令

top命令是最常用的CPU性能分析工具,可以实时显示系统中CPU使用率最高的进程。

# 运行top命令
# top

top – 14:30:22 up 1 day, 2:45, 2 users, load average: 0.75, 0.89, 0.92
Tasks: 198 total, 1 running, 197 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.2 us, 2.1 sy, 0.0 ni, 91.5 id, 0.9 wa, 0.0 hi, 0.3 si, 0.0 st
MiB Mem : 64424.0 total, 48256.3 free, 8124.7 used, 8043.0 buff/cache
MiB Swap: 32768.0 total, 32768.0 free, 0.0 used. 54286.7 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 256340 12456 8764 S 5.3 0.0 0:12.45 java
5678 oracle 20 0 1234567 456789 34567 S 3.2 0.7 1:23.45 oracle
9012 root 20 0 45678 3456 2345 S 1.0 0.0 0:05.67 nginx

1.2 mpstat命令

mpstat命令可以显示每个CPU核心的使用情况,对于分析多核CPU的负载分布非常有用。

# 查看所有CPU核心的使用情况
# mpstat -P ALL 1 5

Linux 5.4.17-2136.302.7.2.el7uek.x86_64 (fgedu.net.cn) 03/30/2026 _x86_64_ (32 CPU)

14:35:22 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
14:35:23 all 5.20 0.00 2.10 0.90 0.00 0.30 0.00 0.00 0.00 91.50
14:35:23 0 4.00 0.00 2.00 1.00 0.00 0.00 0.00 0.00 0.00 93.00
14:35:23 1 6.00 0.00 2.00 0.00 0.00 1.00 0.00 0.00 0.00 91.00
14:35:23 2 5.00 0.00 2.00 1.00 0.00 0.00 0.00 0.00 0.00 92.00
14:35:23 3 5.00 0.00 2.00 1.00 0.00 0.00 0.00 0.00 0.00 92.00

1.3 pidstat命令

pidstat命令可以查看指定进程的CPU使用情况,对于分析特定应用的CPU消耗非常有用。

# 查看进程ID为1234的CPU使用情况
# pidstat -p 1234 1 5

Linux 5.4.17-2136.302.7.2.el7uek.x86_64 (fgedu.net.cn) 03/30/2026 _x86_64_ (32 CPU)

14:40:22 PID %usr %system %guest %CPU CPU Command
14:40:23 1234 4.00 1.00 0.00 5.00 0 java
14:40:24 1234 5.00 1.00 0.00 6.00 0 java
14:40:25 1234 4.00 1.00 0.00 5.00 1 java
14:40:26 1234 5.00 1.00 0.00 6.00 1 java
14:40:27 1234 4.00 1.00 0.00 5.00 0 java

2. 内存性能分析工具

内存是系统性能的另一个关键因素,分析内存使用情况对于排查内存泄漏和优化内存配置非常重要。学习交流加群风哥微信: itpux-com

2.1 free命令

free命令可以显示系统内存的使用情况,包括物理内存和交换空间。

# 查看内存使用情况
# free -h

total used free shared buff/cache available
Mem: 62G 2.1G 58G 8.5M 1.8G 59G
Swap: 32G 0B 32G

2.2 vmstat命令

vmstat命令可以显示内存、交换空间和进程状态等信息,对于分析内存使用趋势非常有用。

# 查看内存使用趋势
# vmstat 1 5

procs ———–memory———- —swap– —–io—- -system– ——cpu—– r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 60856720 184320 1884648 0 0 0 0 123 234 5 2 91 1 0
0 0 0 60856720 184320 1884648 0 0 0 0 112 213 4 2 93 1 0
0 0 0 60856720 184320 1884648 0 0 0 0 105 201 5 2 92 1 0
0 0 0 60856720 184320 1884648 0 0 0 0 118 225 6 2 91 1 0
0 0 0 60856720 184320 1884648 0 0 0 0 110 210 4 2 93 1 0

2.3 sar命令

sar命令可以收集和报告系统活动,包括内存使用情况,对于长期监控内存使用趋势非常有用。

# 查看内存使用情况
# sar -r 1 5

Linux 5.4.17-2136.302.7.2.el7uek.x86_64 (fgedu.net.cn) 03/30/2026 _x86_64_ (32 CPU)

14:45:22 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
14:45:23 60856720 61543216 2148544 3.38 184320 1884648 325432 0.51 156789 123456 45
14:45:24 60856720 61543216 2148544 3.38 184320 1884648 325432 0.51 156789 123456 45
14:45:25 60856720 61543216 2148544 3.38 184320 1884648 325432 0.51 156789 123456 45
14:45:26 60856720 61543216 2148544 3.38 184320 1884648 325432 0.51 156789 123456 45
14:45:27 60856720 61543216 2148544 3.38 184320 1884648 325432 0.51 156789 123456 45

风哥风哥提示:内存分析时,应关注available内存而不是free内存,因为available内存包括了可以被回收的缓存和缓冲区。

3. 磁盘I/O性能分析工具

磁盘I/O是系统性能的常见瓶颈,分析磁盘I/O性能对于优化存储配置和应用性能非常重要。学习交流加群风哥QQ113257174

3.1 iostat命令

iostat命令可以显示磁盘I/O统计信息,对于分析磁盘性能非常有用。

# 查看磁盘I/O性能
# iostat -x 1 5

Linux 5.4.17-2136.302.7.2.el7uek.x86_64 (fgedu.net.cn) 03/30/2026 _x86_64_ (32 CPU)

device r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
fd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda 1.20 0.80 0.02 0.01 32.00 0.01 4.50 3.00 6.00 2.00 0.40
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

3.2 iotop命令

iotop命令可以显示进程的I/O使用情况,对于找出I/O消耗高的进程非常有用。

# 查看进程I/O使用情况
# iotop

Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
12345 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/u64:0]
12346 be/4 oracle 0.00 B/s 0.00 B/s 0.00 % 0.00 % oracle(fgedudb)
12347 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % java

3.3 fio命令

fio命令是一个灵活的I/O测试工具,可以模拟各种I/O负载,对于测试磁盘性能非常有用。

# 测试顺序读性能
# fio –name=seq-read –ioengine=libaio –direct=1 –rw=read –bs=4k –size=1G –numjobs=4 –runtime=60 –group_reporting

seq-read: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1

Run status group 0 (all jobs):
READ: bw=12345KB/s (12.6MB/s), 12345KB/s-12345KB/s (12.6MB/s-12.6MB/s), io=1024MB, run=83001-83001msec

Disk stats (read/write):
sda: ios=262144/0, merge=0/0, ticks=45678/0, in_queue=45678, util=95.20%

4. 网络性能分析工具

网络性能对于分布式系统和网络应用至关重要,分析网络性能对于排查网络瓶颈非常重要。更多学习教程公众号风哥教程itpux_com

4.1 netstat命令

netstat命令可以显示网络连接、路由表和网络接口等信息,对于分析网络连接状态非常有用。

# 查看网络连接状态
# netstat -tuln

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
udp6 0 0 :::546 :::*

4.2 ss命令

ss命令是netstat的替代品,提供更快、更详细的网络连接信息。

# 查看网络连接状态
# ss -tuln

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 100 127.0.0.1:25 *:*
tcp LISTEN 0 128 :::80 :::*
tcp LISTEN 0 128 :::22 :::*
tcp LISTEN 0 100 ::1:25 :::*
udp UNCONN 0 0 *:68 *:*
udp UNCONN 0 0 :::546 :::*

4.3 ping命令

ping命令可以测试网络连通性和延迟,对于排查网络连接问题非常有用。

# 测试网络连通性
# ping -c 5 google.com

PING google.com (142.250.74.142) 56(84) bytes of data.
64 bytes from lhr25s21-in-f14.1e100.net (142.250.74.142): icmp_seq=1 ttl=115 time=12.3 ms
64 bytes from lhr25s21-in-f14.1e100.net (142.250.74.142): icmp_seq=2 ttl=115 time=12.1 ms
64 bytes from lhr25s21-in-f14.1e100.net (142.250.74.142): icmp_seq=3 ttl=115 time=12.2 ms
64 bytes from lhr25s21-in-f14.1e100.net (142.250.74.142): icmp_seq=4 ttl=115 time=12.0 ms
64 bytes from lhr25s21-in-f14.1e100.net (142.250.74.142): icmp_seq=5 ttl=115 time=12.1 ms

— google.com ping statistics —
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 12.016/12.143/12.301/0.108 ms

4.4 traceroute命令

traceroute命令可以显示数据包从源到目标的路径,对于排查网络路由问题非常有用。

# 查看网络路径
# traceroute google.com

traceroute to google.com (142.250.74.142), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.543 ms 0.487 ms 0.461 ms
2 10.0.0.1 (10.0.0.1) 1.234 ms 1.123 ms 1.098 ms
3 203.0.113.1 (203.0.113.1) 5.678 ms 5.567 ms 5.456 ms
4 142.250.74.142 (142.250.74.142) 12.345 ms 12.234 ms 12.123 ms

5. 系统整体性能分析工具

系统整体性能分析工具可以提供系统各方面的性能指标,对于全面了解系统状态非常重要。author:www.itpux.com

5.1 vmstat命令

vmstat命令可以显示系统整体性能指标,包括进程、内存、交换空间、I/O和CPU使用情况。

# 查看系统整体性能
# vmstat 1 5

procs ———–memory———- —swap– —–io—- -system– ——cpu—– r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 60856720 184320 1884648 0 0 0 0 123 234 5 2 91 1 0
0 0 0 60856720 184320 1884648 0 0 0 0 112 213 4 2 93 1 0
0 0 0 60856720 184320 1884648 0 0 0 0 105 201 5 2 92 1 0
0 0 0 60856720 184320 1884648 0 0 0 0 118 225 6 2 91 1 0
0 0 0 60856720 184320 1884648 0 0 0 0 110 210 4 2 93 1 0

5.2 sar命令

sar命令可以收集和报告系统活动,包括CPU、内存、磁盘I/O和网络等性能指标。

# 查看系统整体性能
# sar -u 1 5

Linux 5.4.17-2136.302.7.2.el7uek.x86_64 (fgedu.net.cn) 03/30/2026 _x86_64_ (32 CPU)

15:00:22 CPU %user %nice %system %iowait %steal %idle
15:00:23 all 5.20 0.00 2.10 0.90 0.00 91.80
15:00:24 all 4.80 0.00 1.90 0.80 0.00 92.50
15:00:25 all 5.10 0.00 2.00 0.90 0.00 92.00
15:00:26 all 5.30 0.00 2.10 0.90 0.00 91.70
15:00:27 all 4.90 0.00 1.90 0.80 0.00 92.40

5.3 htop命令

htop命令是top的增强版本,提供更友好的界面和更多的功能,对于实时监控系统性能非常有用。

# 运行htop命令
# htop

# 输出示例(文本模式)
1 [||| 3.2%] Tasks: 198, 1 running
2 [||| 3.1%] Load average: 0.75 0.89 0.92
3 [||| 3.0%] Uptime: 1 day, 02:45:30
4 [||| 3.2%]
Mem[||||||||||||||||||| 8.1G/62G]
Swp[ 0K/32G]

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1234 root 20 0 256M 12M 8.6M S 5.3 0.0 0:12.45 java
5678 oracle 20 0 1.2G 456M 34M S 3.2 0.7 1:23.45 oracle
9012 root 20 0 45M 3.4M 2.3M S 1.0 0.0 0:05.67 nginx

6. 应用性能分析工具

应用性能分析工具可以帮助分析应用程序的性能瓶颈,对于优化应用性能非常重要。

6.1 strace命令

strace命令可以跟踪进程的系统调用,对于分析应用程序的行为和性能瓶颈非常有用。

# 跟踪进程ID为1234的系统调用
# strace -p 1234

strace: Process 1234 attached
read(3, “GET /api/v1/users HTTP/1.1\r\nHost: fgedu.net.cn\r\nUser-Agent: curl/7.29.0\r\nAccept: */*\r\n\r\n”, 1024) = 86
write(4, “HTTP/1.1 200 OK\r\nContent-Type: application/json\r\nContent-Length: 1234\r\n\r\n{\”users\”:[{\”id\”:1,\”name\”:\”admin\”}]}`, 1300) = 1300
close(3) = 0
close(4) = 0

6.2 ltrace命令

ltrace命令可以跟踪进程的库调用,对于分析应用程序的库使用情况非常有用。

# 跟踪进程ID为1234的库调用
# ltrace -p 1234

malloc(1024) = 0x7f8a1b2c3d40
free(0x7f8a1b2c3d40) =
printf(“Hello, world!\n”) = 14

6.3 perf命令

perf命令是Linux性能分析工具,可以分析CPU性能计数器、跟踪点和事件,对于深入分析应用性能非常有用。

# 分析进程ID为1234的CPU性能
# perf top -p 1234

Samples: 1K of event ‘cpu-clock’, Event count (approx.): 1000000
Overhead Shared Object Symbol
15.23% libjava.so [.] Java_java_lang_Thread_currentThread
8.76% libc.so.6 [.] __GI___strcmp_ssse3
5.43% libjava.so [.] Java_java_lang_Object_wait
3.21% libjvm.so [.] GC_PrepareWeakRefs

7. 性能分析最佳实践

性能分析是一个系统工程,需要综合考虑多个因素,以下是一些性能分析的最佳实践。

生产环境风哥建议:

  • 定期进行性能基线测试,建立系统正常运行时的性能指标
  • 使用多种工具进行综合分析,避免单一工具的局限性
  • 关注系统瓶颈,优先解决影响最大的性能问题
  • 建立性能监控系统,及时发现性能异常
  • 根据系统负载和应用需求,合理配置系统资源
  • 定期进行性能优化,持续改进系统性能

7.1 性能分析步骤

  1. 确定性能问题的症状和影响范围
  2. 使用系统工具收集性能数据
  3. 分析性能数据,找出瓶颈
  4. 制定优化方案
  5. 实施优化方案
  6. 验证优化效果
  7. 记录优化过程和结果

7.2 常见性能瓶颈及解决方案

  • CPU瓶颈:优化应用代码、增加CPU核心数、使用更高效的算法
  • 内存瓶颈:增加内存、优化内存使用、减少内存泄漏
  • 磁盘I/O瓶颈:使用SSD、优化文件系统、使用RAID、调整I/O调度策略
  • 网络瓶颈:增加带宽、优化网络配置、使用CDN、减少网络传输量
  • 应用瓶颈:优化应用代码、使用缓存、数据库优化、负载均衡
风哥风哥提示:性能分析是一个持续的过程,需要定期进行,以便及时发现和解决性能问题。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息