Linux性能分析工具
影響Linux服務器性能的因素有很多,從底層的硬件到操作系統,從網絡到上層應用。找到系統硬件和軟件資源的平衡點是關鍵。
1.uptime
10:27:14 up 18 min, 5 users, load average: 10.78, 9.13, 5.42
重點關註load average參數,3個數值分別表示1分鐘、5分鐘、10分鐘的系統負載。如果負載值長時間超過CPU個數的2倍,說明系統處於高負載狀態
2.vmstat
procs
r表示運行和等待CPU時間片的進程數,如果這個值長期大於CPU個數,說明CPU性能不足
b表示在等待資源的進程數,等待的資源有I/O或內存交換等
memory
swpd表示切換到內粗交換區的內存數量,單位KB
free表示當前空閑的內存數量,單位KB
buff表示buffers cache的內存數量
cache表示page cached的內存數量
swap
si表示內存進入內存交換區的數量
so表示內存交換區進入內存的數量
#一般情況下,si、so的值都為0。如果si、so的值長期不為0,則系統內存不足
io
bi表示從塊設備讀取數據總量,單位KB
bo表示寫入到塊設備的數據總量,單位KB
#bi + bo 的值大於1000,而且wa的值較大,表示系統磁盤IO有問題
system
in表示在謀一時間間隔中觀測到的每秒設備中斷數
cs表示每秒產生的上下文切換次數,值越大表示內核消耗的CPU時間越多
CPU
us表示用戶進程消耗的CPU時間百分比。值過高需考慮優化程序或算法
sy表示內核進程消耗的CPU時間百分比
id表示CPU處在空閑狀態時間的百分比
wa表示IO等待所占用的CPU時間百分比,值越高,IO等待越嚴重
st表示虛擬機占用的時間百分比
#us + sy 的值大於80%,可能會CPU性能不足
3.top
Mem: 總內存 空閑內存 已經使用的內存 用於緩存的內存
Swap: 交換空間總大小 空閑的交換空間 使用的交換內存空間 可用的內存空間
#top命令默認5秒刷新一次
#top命令按m鍵進入內存模式
4.free 查看內存使用狀況
5.iostat 查看磁盤I/O
tps每秒發送到的I/O請求數 kB_read/s每秒讀取的數據塊數 kB_wrtn/s每秒寫入的數據塊數
kB_read讀取的所有塊數 kB_wrtn寫入的所有塊數
常用參數
-c 僅顯示CPU統計信息,與-d互斥
-d 僅顯示磁盤統計信息,與-c互斥
-k 以KB為單位顯示每秒磁盤請求數,默認單位為塊
-p 後面跟具體設備或ALL,用於顯示某塊設備及系統分區的統計信息
-t 在輸出數據時,打印搜集數據的時間
-V 打印版本號
-x 輸出擴展信息
6.TCP連接優化
TCP/IP連接斷開後,會以TIME_WAIT狀態保留一定的時間,然後才會釋放端口。當並發請求過多的時候,就會產生大量的TIME_WAIT,不能及時斷開的話,會占用大量的端口資源和服務器資源
netstat -an|awk ‘/tcp/ {print $6}‘|sort|uniq -c
5 ESTABLISHED
5 LISTEN
2048 TIME_WAIT
vim /etc/sysctl.conf
#開啟重用,允許將TIME_WAIT狀態的連接重新用於新的TCP連接
net.ipv4.tcp_tw_reuse = 1
#開啟TCP連接中TIME_WAIT連接的快速回收
net.ipv4.tcp_tw_recycle = 1
#控制同時保持TIME_WAIT套接字的最大數量
net.ipv4.tcp_max_tw_buckets = 1000
sysctl -p
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_tw_buckets = 1000
netstat -an|awk ‘/tcp/ {print $6}‘|sort|uniq -c
6 ESTABLISHED
5 LISTEN
995 TIME_WAIT
TCP狀態說明
Linux性能分析工具