网站建设这个行业如何企业做营销型网站
从前遇到系统卡顿只会top。。top看不出来怎么搞呢?
Linux系统提供了丰富的命令行工具,以帮助用户和系统管理员监控和分析系统性能。在这些工具中,uptime、mpstat和pidstat是非常有用的命令,它们可以帮助你理解系统的平均负载以及资源使用情况。

uptime命令
uptime命令用于显示系统运行的时间、用户数量以及平均负载。平均负载是指在特定时间间隔内,系统处于运行状态和不可中断状态的平均进程数。这个数字给出了系统工作负载的一个概览。
使用uptime命令
root@gl:/home/gl# uptime08:58:38 up  4:17,  4 users,  load average: 0.97, 1.00, 0.86 
这里的08:58:38是当前时间,up 4:17 表示系统已经运行了4小时17分钟,4 users表示有4个用户登录系统,load average: 0.97, 1.00, 0.86分别表示过去1分钟、5分钟和15分钟的平均负载。
mpstat命令
mpstat命令用于报告CPU的统计信息。它可以显示每个可用CPU的性能统计,帮助你分析CPU的使用情况。
使用mpstat命令
Linux 4.15.0-213-generic (gl)   01/16/2024      _x86_64_        (2 CPU)08:58:13 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
08:58:14 AM  all    0.00    0.00    8.75   25.62    0.00    3.12    0.00    0.00    0.00   62.50
08:58:14 AM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
08:58:14 AM    1    0.00    0.00   23.33   68.33    0.00    8.33    0.00    0.00    0.00    0.00 
可以看出,系统中有两个cpu,1号cpu(%iowait)68%,说明存在大量的IO操作。
 pidstat命令
 
pidstat用于监控各个进程的资源使用情况,包括CPU、内存、磁盘I/O等。
使用pidstat命令
root@gl:/home/gl# pidstat -u 1
Linux 4.15.0-213-generic (gl)   01/16/2024      _x86_64_        (2 CPU)08:58:34 AM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:58:35 AM     0       220    0.00    8.91    0.00    0.00    8.91     1  kworker/1:1H
08:58:35 AM     0     18799    0.00    8.91    0.00    8.91    8.91     1  stress 
PID:进程ID。
 %usr:用户态CPU时间百分比。
 %system:内核态CPU时间百分比。
 %guest:客户机操作系统占用的CPU时间百分比。
 %wait:进程等待I/O操作完成所占用的CPU时间百分比。
 %CPU:总的CPU使用率百分比。
 CPU:进程所在的CPU编号。
 Command:进程的命令名。
从pidstat的结果可以看出名为stress的这个进程是触发iowait较高的罪魁祸首。
ps命令
root@gl:/home/gl# ps aux | grep stress
root     18798  0.0  0.0   3704  1372 pts/0    S+   08:57   0:00 stress -i 1 --timeout 600
root     18799 11.3  0.0   3704   108 pts/0    D+   08:57   0:38 stress -i 1 --timeout 600 
通过ps命令先拿到stress的pid,如上有两个。
strace命令
依次用strace查看进程正在执行的系统调用,发现在不停的执行sync(刷新缓存到磁盘)操作,所以合理怀疑可能是stress进程中写完文件刷新时存在死循环。下一步就可以考虑对比log分析对应部分的代码了。
root@gl:/home/gl# strace -p 18799
strace: Process 18799 attached
sync()                                  = 0
sync()                                  = 0
sync()                                  = 0
sync()                                  = 0
sync()                                  = 0
... 
分析平均负载
通过uptime命令提供的平均负载信息,我们可以得到系统整体的负载情况。如果平均负载数值超过了CPU核心数,这可能意味着系统过载。
使用mpstat,我们可以深入了解每个CPU核心的使用情况,从而判断是否有核心过载或者空闲。pidstat则提供了进程级别的资源使用情况,帮助我们找出是哪些进程导致了高负载。更近一步的,可以使用strace命令查看查看指定进程在进行哪些系统调用
所以结合mpstat、pidstat、ps、strace这些工具,我们可以全面分析系统的性能瓶颈,并采取相应的优化措施,从此再也不用慌了~

