概述
性能測試中,對服務端的指標監控也是很重要的一個環節。通過對各項服務器性能指標的監控分析,可以定位到性能瓶頸。
后端性能指標有CPU,內存,網絡,I/O等等
分析思路
- 整體系統CPU利用率
- 內存利用率
- 磁盤I/O的利用率和延遲
- 網絡利用率
CPU定位分析
監控命令:vmstat、sar、dstat、mpstat、top、ps
類型 | 度量方法 | 衡量標准 |
利用率 | 1、vmstat 統計1-%idle 2、sar -u 統計1-%idle 3、dstat 統計1-%idl 4、mpstat -P ALL 統計1-%idle |
user%+sys%<70%(好) 70%<user%+sys%<=85%(壞) 90%<=user%+sys%(糟糕) |
負載 | 1、vmstat的r值 2、sar -q ,“runq-sz” 3、load average |
r長期>cpu個數,cpu不足 runq-sz 長期>cpu個數,cpu不足 load average>cpu個數(cpu繁忙) |
內存定位分析
當物理內存不夠時,會使用swap分區,所以性能測試過程中需要關注swap和mem的使用情況。
物理內存不夠,大量的內存置換到swap空間,可能導致CPU和I/O的瓶頸。
監控命令:vmstat、sar、dstat、free、top、ps等
類型 | 度量方法 |
衡量標注 |
占用率 | 1、free 查看使用情況 2、vmstat 3、sar -r 4、ps |
注意>=50% 告警>=70% 嚴重>=80% |
滿載 | 1、vmstat的si/so比例,swapd占比 2、sar -W 查看次缺頁數 3、dmesg | grep killed |
1、so數值大,且swapd已經占比很高,內存已經飽和 2、sar命令次缺頁多意味內存已經飽和 3、內存不夠用會觸發內核的OOM機制 |
網絡定位分析
監控命令:sar、ifconfig、netstat,以及查看net的dev速率。
通過查看發現收發包的吞吐率達到網卡的最大上限,網絡數據報文有因為這類原因而引起的丟包、阻塞等現象都證明當前網絡可能存在瓶頸。
為了減小網絡對性能測試的影響,一般我們都在局域網中進行測試執行。
類型 | 度量方法 | 衡量標准 |
使用情況 | 1、sar -n DEV 的收發計數大於網卡上限 2、ifconfig RX/TX寬帶超過網卡上限 3、cat /proc/net/dev的速率超過上限 4、nicstat的util基本滿負荷 |
1、收發包的吞吐率達到網卡上限 2、有延遲 3、有丟包 4、有阻塞 |
滿載 | 1、ifconfig dropped 有計數 2、netstat -s "segments retransmited"有計數 3、sar -n EDEV,rxdrop/s txdrop/s有計數 |
有丟包統計 |
錯誤 | 1、ifconfig,“errors” 2、netstat -i,RX-ERR TX-ERR 3、sar -n EDEV,rxerr/s txerr/s 4、ip -s link, “errors” |
錯誤有計數 |
IO定位分析
I/O讀寫頻繁的時候,如果I/O得不到滿足會導致應用的阻塞。
需要考慮I/O的TPS、平均I/O數據、平均隊列長度、平均服務時間、平均等待時間、IO利用率(磁盤Busy Time%)等指標
監控命令:sar、iostat、iotop
類型 | 度量方法 | 衡量標准 |
使用情況 | 1、iostat -xz,“%util” 2、sar -d,“%util” 3、cat /proc/pid/sched | grep iowait |
注意>=40% 告警>=60% 嚴重>=80% |
滿載 | 1、iostat -xnz,“avgqu-sz ”>1 2、iostat await>70 |
IO疑似滿載 |
錯誤 | 1、dmseg 查看io錯誤 2、smartctl /dev/sda |
有錯誤信息 |