㈠ 理解top命令的系統平均負載
平常我們最關心的應該是平均工作負載,那怎麼理解這個平均工作負載?
man uptime
平均負載是指單位時間內,系統處於 可運行狀態 和 不可中斷狀態 的平均進程數,也就是平均活躍進程數,它和 CPU 使用率並沒有直接關系。
平均負載最理想的情況是等於 CPU 個數。
最理想的,就是每個 CPU 上都剛好運行著一個進程,這樣每個 CPU 都得到了充分利用。
比如當平均負載為 2 時,意味著什麼呢?
當平均負載高於 CPU 數量 70% 的時候,就應該分析排查負載高的問題了。一旦負載過高,就可能導致進程響應變慢,進而影響服務的正常功能。
三個不同時間間隔的平均值,其實給我們提供了,分析系統負載趨勢的數據來源,讓我們能更全面、更立體地理解目前的負載狀況。
平均負載指單位時間內,處於正在使用 CPU 或者正在等待 CPU 的和等待I/O的進程
而 CPU 使用率,是單位時間內 CPU 繁忙情況的統計,跟平均負載並不一定完全對應。比如:
在理解了上面的平均負載後,分別測試不同場景下的表現。
先簡單介紹一下 stress 和 sysstat。
第一個終端執行: stress --cpu 1 --timeout 600
第二個終端執行: watch -d uptime
第三個終端執行: mpstat -P ALL 5
從上面可以看出 1 分鍾的平均負載會慢慢增加到 1.00,而從終端三中還可以看到,正好有一個 CPU 的使用率為 100%,但它的 iowait 只有 0。這說明,平均負載的升高正是由於 CPU 使用率為 100% 。
那麼到底時哪個進程導致了CPU的使用率為100%呢,可以使用 pidstat -u 5 1 來查詢:
第一個終端執行: stress -i 1 --timeout 600
第二個終端執行: watch -d uptime
第三個終端執行: mpstat -P ALL 5
那麼到底時哪個進程導致了CPU的使用率為100%呢,可以使用 pidstat -u 5 1 來查詢:
第一個終端執行: stress -c 4 --timeout 600
第二個終端執行: watch -d uptime
㈡ 什麼是cpu平均負載
每次發現系統變慢時,我們通常做的第一件事,就是執行 top 或者 uptime 命令,來了解系統的負載情況。如下所示我輸入uptime
我們會看到 load average: 0.00, 0.04, 0.05。這三個數字,依次則是過去 1 分鍾、5 分鍾、15 分鍾的平均負載(Load Average)
我之前理解為,過去1分鍾,5分鍾,15分鍾,cpu使用率。比如過去5分鍾為4%,cpu閑得蛋疼。這種理解其實是錯誤的,簡單來說,平均負載是指單位時間內,系統處於 可運行狀態 和 不可中斷狀態 的平均進程數,也就是平均活躍進程數。
可運行狀態 的進程,是指正在使用 CPU 或者正在等待 CPU 的進程,也就是我們常用 ps 命令看到的,處於 R 狀態(Running 或 Runnable)的進程。
不可中斷狀態 的進程則是正處於內核態關鍵流程中的進程,並且這些流程是不可打斷的,比如最常見的是等待硬體設備的 I/O 響應,也就是我們在 ps 命令中看到的 D 狀態(Uninterruptible Sleep,也稱為 Disk Sleep)的進程。
理想情況,一個cpu一個進程最合理,也就是4核cpu,平均負載為4的時候最合理。但是,通常我們會認為平均負載到了70%的時候,就應該觀察了。如果4核cpu,那麼就是2.8的時候。
查看cpu核數:
cpu使用率與cpu平均負載有什麼關系呢,真相是沒有必然聯系。如果是cpu密集型工作,那兩者是一致的。如果是io密集型工作,那cpu使用率可能比較低,但是平均負載比較高。
准備:
案例一(cpu密集型)
開一個終端
stress --cpu 1 --timeout 600 #模擬一個cpu 100%
開第二個終端
uptime 多執行幾次,可以發現第一個數字會變成1
案例二(IO密集型)
開一個終端
stress -i 1 --timeout 600
其他的跟案例一一樣
案例三(大量進程搶佔cpu)
開一個終端
stress -c 8 --timeout 600
其他跟案例一一樣
平均負載提供了一個快速查看系統整體性能的手段,反映了整體的負載情況。但只看平均負載本身,我們並不能直接發現,到底是哪裡出現了瓶頸。所以,在理解平均負載時,也要注意:是否cpu的確繁忙,還是存在大量io等待,又或者是很多線程搶佔cpu。需要根據mpstat和pidstat來分析
㈢ linux里的負載均衡是什麼意思
負載均衡,英文名稱為Load
Balance,其意思就是分攤到多個操作單元上進行執行,例如Web伺服器、FTP伺服器、企業關鍵應用伺服器和其它關鍵任務伺服器等,從而共同完成工作任務。
負載均衡作用是建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴展網路設備和伺服器的帶寬、增加吞吐量、加強網路數據處理能力、提高網路的靈活性和可用性。
負載均衡與操作系統沒關系。