此文章使用機器並無負載過高情況,只是記錄一下排查思路。 1、查看系統cpu load情況 top 1.1 按c可按照cpu占用大小排序 1.2 按1可顯示出多核cpu占用情況 查出某一個進程占用高後可以使用 top -H -p $pid 詳細查看進程中線程情況 2、關於load的一些知識 2.1 l ...
此文章使用機器並無負載過高情況,只是記錄一下排查思路。
1、查看系統cpu load情況
top
1.1 按c可按照cpu占用大小排序
1.2 按1可顯示出多核cpu占用情況
查出某一個進程占用高後可以使用
top -H -p $pid
詳細查看進程中線程情況
2、關於load的一些知識
2.1 load高不一定是性能有問題,可能是因為在進行cpu密集型計算
2.2 系統load高不一定是cpu能力問題或者數量不夠,只是代表需要運行的隊列累計過多了。但隊列中的任務實際可能是耗Cpu的,也可能是耗i/0或者其他因素的。
2.3 系統長期Load高,解決辦法不是一味地首先增加CPU,因為Load只是表象,不是實質。增加CPU個別情況下會臨時看到Load下降,但治標不治本。
3、load高的情況下需要鑒別系統瓶頸到底是CPU不足,還是io不夠快造成或是記憶體不足造成的。
3.1 vmstat命令詳解
[root@aaa ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 5962096 146548 1499832 0 0 0 2 1 1 0 0 100 0 0
procs部分的解釋
r 列表示運行和等待cpu時間片的進程數,如果長期大於1,說明cpu不足,需要增加cpu。
b 列表示在等待資源的進程數,比如正在等待I/O、或者記憶體交換等。
memory部分的解釋
swpd 切換到記憶體交換區的記憶體數量(k表示)。如果swpd的值不為0,或者比較大,比如超過了100m,只要si、so的值長期為0,系統性能還是正常.
free 當前的空閑頁面列表中記憶體數量(k表示)
buff 作為buffer cache的記憶體數量,一般對塊設備的讀寫才需要緩衝。
cache: 作為page cache的記憶體數量,一般作為文件系統的cache,如果cache較大,說明用到cache的文件較多,如果此時IO中bi比較小,說明文件系統效率比較好。
1.buffer:
A buffer is something that has yet to be "written" to disk.翻譯過來就是:buffer就是寫入到磁碟。buffer是為了提高記憶體和硬碟(或其他I/O設備)之間的數據交換的速度而設計的。buffer將數據緩衝下來,解決速度慢和快的交接問題;速度快的需要通過緩衝區將數據一點一點傳給速度慢的區域。例如:從記憶體中將數據往硬碟中寫入,並不是直接寫入,而是緩衝到一定大小之後刷入硬碟中。
2.cache:
A cache is something that has been "read" from the disk and stored for later use.翻譯過來就是:cache就是從磁碟讀取數據然後存起來方便以後使用。cache實現數據的重覆使用,速度慢的設備需要通過緩存將經常要用到的數據緩存起來,緩存下來的數據可以提供高速的傳輸速度給速度快的設備。例如:將硬碟中的數據讀取出來放在記憶體的緩存區中,這樣以後再次訪問同一個資源,速度會快很多。
swap部分的解釋
si 由記憶體進入記憶體交換區數量。
so由記憶體交換區進入記憶體數量。
IO部分的解釋
bi 從塊設備讀入數據的總量(讀磁碟)(每秒kb)。
bo 從塊設備寫入數據的總量(寫磁碟)(每秒kb)
system部分的解釋
in 列表示在某一時間間隔中觀測到的每秒設備中斷數。 cs列表示每秒產生的上下文切換次數,如當 cs 比磁碟 I/O 和網路信息包速率高得多,都應進行進一步調查。
cpu部分的解釋
us 列顯示了用戶方式下所花費 CPU 時間的百分比。us的值比較高時,說明用戶進程消耗的cpu時間多,但是如果長期大於50%,需要考慮優化用戶的程式。
sy 列顯示了內核進程所花費的cpu時間的百分比。
這裡us + sy的參考值為80%,如果us+sy 大於 80%說明可能存在CPU不足。
wa 列顯示了IO等待所占用的CPU時間的百分比。這裡wa的參考值為30%,如果wa超過30%,說明IO等待嚴重,這可能是磁碟大量隨機訪問造成的,也可能磁碟或者 磁碟訪問控制器的帶寬瓶頸造成的(主要是塊操作)。
id 列顯示了cpu處在空閑狀態的時間百分比