性能监控诊断linux系统笔记

把之前做的碎片化的性能分析进行系统化学习,这里参考的是陈志勇、马利伟、万龙著《全栈性能测试修炼宝典Jmeter实战》,感觉自己上了一个台阶。
1 评估标准
先看一下web项目性能测试通过的标准,有了评判标准,系统设计的是否优秀就有了依据。
1
2 瓶颈阈值分析
下图把什么方面使用什么样的命令进行了梳理。
1

2.1 CPU定位分析
1
1
2.1.1 uptime\w命令
使用uptime显示当前系统运行了658天,当前有1个用户在线,过去1分钟平均负载为0.62,过去5分钟平均负载为0.53,过去15分钟平均负载为0.45。一般系统建议每个CPU内核的当前活动进程数分析如下:

  1. 不大于0.8,证明系统是空闲的。

  2. 大于1且不大于3的时候,如果系统的其他资源都很正常,那么系统的性能是可以接受的

  3. 大于5,证明系统的性能有问题了。这里我的理解应该是大于3,性能就算有问题。
    书上举了个例子,4核CPU,当uptime输出的结果是15,意味着当前系统负载非常严重,需要分析进程调度策略是否有阻塞。如果上面说的规则是34=12,,12就是上限了,而54=20,莫非要等待20才算有问题?
    平均负载的意思是在特定时间间隔内运行队列中的平均进程数,什么情况进程会进入运行队列内

  4. 它没有等待io操作的结果

  5. 它没有主动进入等待状态(即没有调用wait)

  6. 没有被停止

uptime是分析一段时间内的负载,读取的数据来自/proc/loadavg

[root@bwsc55 ~]# uptime
 19:52:34 up 658 days,  5:40,  1 user,  load average: 0.62, 0.53, 0.45
 [root@bwsc55 ~]# cat /proc/loadavg
0.47 0.41 0.41 3/545 4664```
使用`w`命令可以查看到当前登录用户的信息。
```sh
[root@bwsc55 ~]# w
 19:56:46 up 658 days,  5:45,  1 user,  load average: 0.18, 0.38, 0.41
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
test     pts/0    10.101.7.111     19:50    6.00s  0.01s  0.05s sshd: test [priv] 

2.1.2 top命令
如果要查看当前负载平均值,则需要top等命令,
默认是3s刷新,输入top后,按下d,输入数字即可改变刷新频率
输入top,输入数字1,显示各CPU的利用情况
如果想讲top命令的结果输出到文件中,可以执行下面的命令。
top -b -d 5 -n 3 > top.log
如果想看具体某个进程的,则执行,其中23809是PID,如果要输出用户下的,则使用-u
top -b -d 5 -n 3 -p 23809 > top.log

[root@bwsc55 ~]# top
# 这一行跟uptime的内容相同
top - 20:14:06 up 658 days,  6:02,  1 user,  load average: 0.26, 0.31, 0.37
# 显示进程状态信息,R运行态、S睡眠态、T被跟踪或已停止、Z僵尸态
Tasks: 233 total,   1 running, 232 sleeping,   0 stopped,   0 zombie
# CPU信息 sy:内核空间占用CPU百分比,ni:用户进程空间内该表过优先级的进程CPU占用,id:空闲CPU占比,wa:等待输入输出的CPU占比,hi:硬终端CPU占比,si软终端CPU占比。一般关注多的是us、sy、hi、si、id、wa这6个数值。
# wa:使用率过高,要考虑IO的性能是否有瓶颈。可以通过iostat、sar等命令进一步分析
# hi:使用率过高,一般硬件中终端可以分析/proc/interrupts、/proc/irq/pid/smp_affinity(这个文件centos中没有)、服务irqbalance是否配置,以及CPU的频率设置,来帮系统打散优化系统的硬件终端
# si: linux kernel通过软件的方法(可延迟函数)来模拟硬件的中断模式,常见的软件中断都和网络有关,从网卡到IP层的数据报文收发都是由软件中断来处理,初次之外长时间地写日志也可能产生软件中断。当发生软件中断出现瓶颈,系统有个ksoftirqd进程,每个CPU都有自己对应的ksoftirqd/n(n为CPU的逻辑id)。每个ksoftirqd的内核线程都会去运行对应的ksoftirqd函数来处理自己的中断队列上的软件中断,所有当网络出现阻塞的时候,软件中断程序ksoftirqd肯定会出现瓶颈
# ni:优先级为操作系统决定CPU分配的参数,linux使用round-robin的算法来做CPU排程,可以通过nice命令来更改优先序
# 一般监控分析获取系统CPU利用率=us+sy+si=6.4+0.6+0.1=7.1%
%Cpu(s):  6.4 us,  0.6 sy,  0.0 ni, 93.0 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
# 内存信息,total:使用的物理内存总量,free:空闲内存容量,buffers:用作内核缓存的内存量,cached:缓冲的交换区总量,
# buffer和cache的作用是缩短io系统调用的时间,比如读写等。一般如果cache的值很大,说明cache住的文件数多。如果频繁地访问文件都能命中,比读取磁盘调用快,磁盘IO必定会减小。但如果频繁访问的文件不能被命中,对cache而言则是资源浪费,此时考虑drop cache并提升对应cache命中率。
# free表示的空闲内存总量,虽然buffer/cache会占一定的物理内存,但当系统需要内存的时候,这些内存也会释放,故buffer/cache可以看成可用内存。
KiB Mem : 24523884 total,   198040 free, 14137036 used, 10188808 buff/cache
total:交换区总量,used:使用的交换区总量,free:空闲交换区总量
KiB Swap:        0 total,        0 free,        0 used.  8775552 avail Mem 
# PR是进程优先级,NI是nice值,负值表示高优先级,正值表示低优先级,VIRT是进程使用的虚拟内存,RES是实际物理内存,SHR是共享内存,TIME+表示进程使用的CPU时间总计,单位1/100秒。
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                 
 9224 es        20   0  0.124t 0.014t 1.289g S  83.7 61.3 233437:44 java                                                                    
    1 root      20   0   50028   3292   1448 S   0.0  0.0 151:47.07 systemd                                                                 
    2 root      20   0       0      0      0 S   0.0  0.0   0:03.68 kthreadd                                                                
    3 root      20   0       0      0      0 S   0.0  0.0   3:12.04 ksoftirqd/0                                                             
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                            
    6 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/u24:0                                                           
    8 root      rt   0       0      0      0 S   0.0  0.0   4:59.38 migration/0                                                             
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                  
   10 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/0                                                                 
   11 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/1                                                                 
   12 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/2       

执行/proc/interrupts,不过看不懂里面的内容

[root@bwsc55 ~]# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       CPU8       CPU9       CPU10      CPU11      
  0:         50          0          0          0          0          0          0          0          0          0          0          0   IO-APIC-edge      timer
  1:         10          0          0          0          0          0          0          0          0          0          0          0   IO-APIC-edge      i8042
  8:          1          0          0          0          0          0          0          0          0          0          0          0   IO-APIC-edge      rtc0
  9:          0          0          0          0          0          0          0          0          0          0          0          0   IO-APIC-fasteoi   acpi
 12:        151          0          0          0          0          0          0          0          0          0          0          0   IO-APIC-edge      i8042
 14:          0          0          0          0          0          0          0          0          0          0          0          0   IO-APIC-edge      ata_piix
 15:          0          0          0          0          0          0          0          0          0          0          0          0   IO-APIC-edge      ata_piix
 16:          0          0          0          0          0          0          0          0          0          0          0          0   IO-APIC-fasteoi   vmwgfx
 24:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 25:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 26:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 27:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 28:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 29:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 30:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 31:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 32:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 33:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 34:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 35:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 36:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 37:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 38:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 39:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 40:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 41:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 42:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 43:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 44:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 45:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 46:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 47:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 48:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 49:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 50:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 51:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 52:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 53:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 54:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 55:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      PCIe PME, pciehp
 56:       4026          0          0          0          0          0          0          0          0 1919164127          0          0   PCI-MSI-edge      vmw_pvscsi
 57:         54          0       1517          0          0        822 2039819237          0       1972       1706          0     143309   PCI-MSI-edge      eth0-rxtx-0
 58:          7          0 1627377101          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      eth0-rxtx-1
 59:          6          0          0          0          0       1683          0          0 1786555780        403          0          0   PCI-MSI-edge      eth0-rxtx-2
 60:          7          0          0 2221955592          0          0          0          0          0          0          0          0   PCI-MSI-edge      eth0-rxtx-3
 61:         11          0          0          0          0          0          0          0          0          0 2814025662          0   PCI-MSI-edge      eth0-rxtx-4
 62:          4          0          0          0 1765472497          0          0          0          0          0          0          0   PCI-MSI-edge      eth0-rxtx-5
 63:          9          0          0          0          0          0          0          0          0          0          0 2303819533   PCI-MSI-edge      eth0-rxtx-6
 64:         11          0          0          0          0 1480298046          0          0          0          0          0          0   PCI-MSI-edge      eth0-rxtx-7
 65:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      eth0-event-8
 66:         50          0          0        400          0          0          0   89016209         16         73          0        111   PCI-MSI-edge      eth1-rxtx-0
 67:      26459      11180          3          0          0        336        224          3          0          0         31        314   PCI-MSI-edge      eth1-rxtx-1
 68:      37096     100962          0          5          6        807        363        419          0          0          0       2451   PCI-MSI-edge      eth1-rxtx-2
 69:          1          0          0          0          0          0          0          0          0          0          0        138   PCI-MSI-edge      eth1-rxtx-3
 70:     368017      57936         14          0          6       1642        863        109          0         20          0       4025   PCI-MSI-edge      eth1-rxtx-4
 71:      16313      44883          0          0          0        447        288         51          0          0          0        188   PCI-MSI-edge      eth1-rxtx-5
 72:       2146          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      eth1-rxtx-6
 73:      79304       9024          9          0          0        338        146         49          4         12          0       3292   PCI-MSI-edge      eth1-rxtx-7
 74:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      eth1-event-8
 75:         20          0          0          0          0          0          0          0          0          0    8529392          0   PCI-MSI-edge      vmw_vmci
 76:          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI-edge      vmw_vmci
NMI:          0          0          0          0          0          0          0          0          0          0          0          0   Non-maskable interrupts
LOC: 2826434280 3154169679 2588674915 2242186769 2045144257 1847115399 2336735121 1769226329 1875015771 1283264538 2275927646 1753449694   Local timer interrupts
SPU:          0          0          0          0          0          0          0          0          0          0          0          0   Spurious interrupts
PMI:          0          0          0          0          0          0          0          0          0          0          0          0   Performance monitoring interrupts
IWI:  177080596   73445593   65204847   54516603   51894355   62200467  138079135   94926969   94136599   94058553   61603286   59969983   IRQ work interrupts
RTR:          0          0          0          0          0          0          0          0          0          0          0          0   APIC ICR read retries
RES: 1220116857  630404425  669953608  555973176  505931659  537516009 1678402842 1613703048 1571729441 1556244426 1326767133 1251567899   Rescheduling interrupts
CAL:   95198784   68756911   94760429   95358936   75822921   79770125  172124438  115430462  148154866 4265367119  147467278  143102130   Function call interrupts
TLB: 1008109044  996337354 1106719245 1064506050  946245186  949002417 1039855144  813134430  972116554  748178961  949989864  980449115   TLB shootdowns
TRM:          0          0          0          0          0          0          0          0          0          0          0          0   Thermal event interrupts
THR:          0          0          0          0          0          0          0          0          0          0          0          0   Threshold APIC interrupts
MCE:          0          0          0          0          0          0          0          0          0          0          0          0   Machine check exceptions
MCP:     189580     189580     189580     189580     189580     189580     189580     189580     189580     189580     189580     189580   Machine check polls
ERR:          0
MIS:          0

2.2 内存定位分析
1
2.2.1 drop cache 释放内存
下面的命令是按照书上执行的,每个命令执行了两遍,估计是确保执行成功,sync是内核同步,echo 3 > /proc/sys/vm/drop_caches是释放内存。因为清理buffer/cache是一个物理内存的数据同步到磁盘的过程,为了保证在执行完drop cache的过程不丢数据,需要执行sync命令,sync命令执行同步避免丢失数据。

[root@bwsc52 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3791        1485         363         184        1942        1832
Swap:          4095         235        3860
[root@bwsc52 ~]# sync
[root@bwsc52 ~]# sync
[root@bwsc52 ~]# echo 3 > /proc/sys/vm/drop_caches
[root@bwsc52 ~]# echo 3 > /proc/sys/vm/drop_caches
[root@bwsc52 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3791        1452        2082         184         256        2022
Swap:          4095         235        3860

2.3 网络定位分析
2
3

2.4 IO定位分析
2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warrah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值