Linux 效能分析工具與判讀
這篇文章主要說明 Linux 效能分析工具與結果的判讀,對於電腦資源來說,不外乎分為下列幾大類:
因此效能瓶頸,首先要釐清是哪一類的資源耗用上的瓶頸。
- CPU
- 記憶體
- 磁碟
- 網路
CPU 效能瓶頸
指令 | uptime |
執行結果 | 17:37:30 up 3 days, 17:06, 7 users, load average: 1.13, 1.23, 1.15 |
解析 | Load average表示, 過去的 1, 5, 15分鐘,平均每個 CPU 有多少工作。
如果是 2 x CPU,這個值多半介於 2 以下是合理的值。 如果是 4 x CPU,這個值多半會介於 4 以下。 如果是 1 x CPU,這個值長時間高於 1 ,那可能就表示 CPU 的忙碌與效能瓶頸。 |
指令 | vmstat 5 10 |
執行結果 | |
解析 | b: 多少工作被 blocked。正常的情況下,這個值預期為 0。
io (bi/bo): 如果是 Disk IO 很高的狀況,這兩個值數字會比較大。 wa: wa 如果值很大,也表示 Disk IO 很高。 swap (si/so): 主要看是否有大量的 memory swap in/so。導致的 high Disk I/O. |
指令 | top |
執行結果 | 4:52pm up 5:08, 3 users, load average: 2.77, 5.81, 3.15
37 processes: 36 sleeping, 1 running, 0 zombie, 0 stopped PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND |
解析 |
|
磁碟效能
指令 | iostat |
執行結果 | |
解析 |
|
記憶體效能
指令 | vmstat |
執行結果 | |
解析 | vmstat 是一個動態的過程。因此必須注意的是隨著時間經過,
是否有大量或是維持很高的 swap (si/so)? Memory swap 會間接導致磁碟的讀取 是否有很高的 b (blocked): 表示 high disk IO 是否有很高的 cpu wa (waiting): 表示 high disk IO |
網路效能
網路的部分觀察主要是看是否有錯誤發生
指令 | netstat -i |
執行結果 | |
解析 | 看是否有許多的 RX-ERR or TX-ERR傳輸上的錯誤發生。 |
指令 | netstat -s |
執行結果 | Ip: 662968 total packets received 0 forwarded 0 incoming packets discarded 659592 incoming packets delivered 162297 requests sent out
Tcp: Udp: |
解析 |
|
Apache 網站效能
最後,跟 Linux 系統無關,但是常見須要注意的 Apache 設定,可以特別注意下列幾個值:
MaxClients 150
MaxKeepAliveRequests 100
MaxRequestsPerChild 0 ; unlimited
MinSpareServers 5
MaxSpareServers 10
越大越好嗎? not really。主要是讓系統取得一個平衡。