【性能測試】接口壓力測試,定位分析和實際案例模擬解析。

【應用類型分類】

系統結構從上向下、操作系統資源從下向上,2種方式分析。

IO bound:表示高負荷的內存使用以及存儲系統,大量數據處理的存儲過程。如:mysql、oracle異常。

CPU bound:高負荷的cpu佔用,一個批量處理cpu請求以及數學計算的過程。如webserver、mailsever

【定位分析】

CPU:50%警告、70%告警;90%嚴重

穩定運行時:

1.vmstat統計1-id的計數;2.sar -u統計1-%idle的計數;3.dstat統計1-id1的計數;

4.mpstat -P ALL統計1-%idle的計數;5.ps統計cpu的計數

滿載負荷時:

1.vmstat,r計數大於1則表示負載;2.sar -q,runq-sz邏輯顆數;3.dstat -p,run的cpu邏輯顆。

異常和錯誤時:

安裝perf捕獲處理器錯誤信息,需要2.6.31以上版本號纔可支持。(查看版本號命令:cat /proc/version、或者uname -r),官方說明:http://www.brendangregg.com/perf.html

常用命令(安裝工具的時候注意linux聯網):安裝yum install perf*、perf --help、perf list

內存:50%注意、70%告警;80%嚴重

穩定運行時:

1.free,查看使用情況;2.vmstat,查看使用情況;3.sar -r;4.ps。

滿載:

1.vmstat,查看si/so比例輔助swapd和free。so數值越大,swapd佔比越高,內存肯定已經飽和。

2.sar-W,查看次缺頁數。sar命令次缺頁面多意味着已經在不停地和swap打交道,證明內存已飽和。

3.查看內核日誌有誤OOM內存溢出機制的kill進程。當內存不夠會出發內核的OOM機制。

4.dmesg | grep killed。

異常和錯誤:

1.查看內核有誤physical failures。2.通過工具valgrind等進行檢查。有計數則異常。

 

網絡:通過查看發現收發包的吞吐速率達到網卡的最大上限,網絡數據報文有因爲這類原因而引發的丟包、阻塞等現象都證明當前網絡可能存在瓶頸,在性能測試爲了減少網絡的影響,一般我們都是在局域網中進行測試執行。

穩定運行時:1.sar -r DEV的收發計數大於網卡上限,表示收發包的吞吐速率達到網卡上限;2.ifconfig RX/TX帶寬超過網卡上限,表示有延遲;3.cat /proc/net/dev的速率超過上限,表示有丟包;4.nicstat的util的基本滿負荷,表示有阻塞。

滿載時:1.ifconfig dropped有計數;2.netstat -s“segments retransmited”有計數;3.sar -n EDEV rxdrop txdrop有計數。表示統計的丟包有計數,證明已經滿了。

錯誤:1.ifconfig,errors錯誤有計數;2. netstat -i,"RX-ERR"/"TX-ERR"錯誤有計數;3.sar -n EDEV,rxerr/s""txer/s";4.ip -s link,”errors“錯誤有計數。

 

IO:40%注意;60%高警;80%阻塞。

正常運行:1.iostat -xz,%util參數;2.sar -d,%util參數;3.iotop的利用率很高;4.cat /proc/pid/sched |grep iowait;

滿載:1.iosstat -xnz 1,“avgqu-sz”>則表示有滿載嫌疑;2.iostat await>70,有滿載嫌疑;

錯誤:1.dmesg 查看io錯誤 ;2.smartctl /dev/sda查看錯誤信息。

 

【實際案例】

一、系統負載監控案例:CPU顆粒數爲恆定值,超過則阻塞。

命令:

1.uptime(運行時長、用戶數、服務器過去1分鐘、5分鐘、15分鐘隊列中的平均進程數負載數)

2.w(當前在線用戶的詳細信息),如果運行時長較短,可能是重啓過,需要檢查是否異常導致重啓

3.如果平均進程負載數0.8以下,表示正常。1-3表示負載。5-15表示有問題。15以上負載嚴重,需要分析進程調度策略,檢查是否已經引起阻塞。如有阻塞,需要用ps和top檢查實時狀態。

4.實時監控小技巧:uptime |awk '{print (NF-2)}',uptime |awk '{print (NF-1)}',uptime |awk '{print NF}'

字段解釋:

%sy內核空間佔用cpu百分比;

%ni用戶進程空間內改變過優先級的進程佔用CPU百分比;

%id空閒CPU百分比

%wa等待輸入輸出的CPU時間百分比;過高需要iostat和sar分析IO性能是否有瓶頸。

%hi硬中斷佔用CPU百分比;過高需要/proc/interrupts、/proc/irq/pid/smp_affinity、服務irqbalance是否配置成功、以及CPU的頻率,通過這些命令幫助系統打散優化系統的硬件中斷

%si軟中斷佔用CPU百分比;常見中斷由網絡引起,從網卡到IP層的數據報文收發延遲,以及長時間寫日誌導致軟件中斷。

 

二、系統監控分析案例:

常用命令:top、htop、dstat、nmon、glance等用戶資源分析命令。

重點命令:top最全、最完整、最頻繁的命令,類似windows的任務管理器。實時更新正在運行的進程和系統載荷情況,包括系統負載、cpu利用分佈情況、內存使用、每個進程的內存使用情況等信息。

TOP頁面分解:

1.任務隊列信息;2.進程狀態信息;3.CPU信息;4.內存信息;5.進程信息;

 

CPU監控:

1.當前cpu利用率=1-%id=%us+%sy(內核空間佔用cpu的百分比)+%si(軟中斷佔用cpu的百分比)(指網卡到ip層數據報文收發的延遲處理,或者長時間寫日誌也會造成軟件中斷)

2.cpu圖形展示組件:gnuplot

 

內存監控:

1.buffer/cache會佔用物理內存,當系統需要的時候,通過drop cache可以釋放內存。

2.舉例說明:本來free -m(物理內存剩餘150)、drop cache(執行內核同步和drop內核調用後)、sync(釋放cache/buffers內存後執行,防止數據丟失)、free -m(重新檢查物理內存剩餘值,會增加buffers和cached的內存值之和)

3.公式:

物理內存總數mem_total=men_used+mem_free。

實際使用的物理內存數-buffers(內核緩存的內存量)/cache(緩衝交換區總量)=used-buffers-cache

實際可用的物理內存數+buffers/cache=free+buffers+cache

交換分區對應的內存總數swap_total=swap_used(使用的交換區總量)+swap_free(空閒的交換區總量)

 

進程監控:

1.top展示的是進程信息,可用ps檢查實際線程級信息。

2.字段說明:

PID:進程號

user:進程所有者的用戶名;

PR:優先級;

NI:nice值,負值表示高優先級,正值表示低優先級;

VIRT:進程使用的虛擬內存總量,單位KB,VIRT=SWAP+RES

RES:進程使用的、未被換出的物理內存大小,單位KB,RES=CODE+DATA

SHR:共享內存大小,單位kb;

%CPU:上次更新到現在的CPU時間佔用百分比。

%MEM:進程使用的物理內存百分比;

TIME+:進程使用的CPU時間總計,單位1/100秒。

COMMAND:命令名/命令行。

【top技巧]

top+enter+H:進入top配置頁面

top+enter+d:進入間隔刷新配置,輸入間隔秒數,可開始刷新。

top+enter+f+A+d:刪除A-PID列,新增UID列;

top+enter+1:切換單顆CPU信息和平均CPU信息。

top -b:批處理模式;需要在文件中保存,並輸出時必帶參數,否則會打印亂碼)

top -c:命令/程序名 觸發

top -d:設置延遲間隔;系統默認爲3秒,舉例:top -d 5,改爲每五秒刷新一次結果

top -n:設置迭代數量;退出前監控的具體次數,舉例:top -n 3,監控3次數據後退出。

top -p:監控特定的PID

top -u或-U:用戶名或者UID

舉例:top -b -d 1 -n 3 >top.log,表示重定向日誌打印到文本中。(必須加-b,否則會顯示亂碼)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章