乾貨:如何監控伺服器效能實踐篇

roc_guo發表於2022-02-18

在更早的時候,監視伺服器是一個非常困難的過程,依賴於人來靠手工檢查問題,包括有哪些人登入到伺服器,開啟日誌,執行單個 ,檢視上述任何一個的輸出是否產生預期的結果。幸運的是,工具發展到今天,讓這個過程變得簡便和集中化,但我們仍然需要弄清楚需要收集哪些伺服器的資訊。

雖然可以直接潛入並檢查伺服器的每次故障,但為了自己的時間價值與故障排除能力,退後一步制定希望獲得的資訊。以下是一些較重要的彙總:

乾貨:如何監控伺服器效能實踐篇乾貨:如何監控伺服器效能實踐篇

瞭解應用程式

在設定應用程式時,應該確保對所期望的行為有一個非常好的瞭解。具體來說,當記憶體,CPU,磁碟或其他系統資源變少時,你應該非常清楚應用程式的執行方式。它會變慢嗎?它會變得遲鈍嗎?它會不載入嗎?這些行為的閾值是什麼?“blip”(如CPU峰值)和真正的問題之間有什麼區別?

這些都不是容易回答的問題,但是我們需要知道期望什麼以及防止過敏的警報系統。

迎接變化的需求

隨著時間的推移,我們的需求會發生變化,可能會實現新功能,刪除無用功能或其他可能會改變應用程式預期行為的轉換等。當發生這種情況時,您需要重新評估應用程式在伺服器上執行的方式,以便了解使用的資源以及在這些資源減少時可以預測的處理和行為。

貼著地面跑

當我們監控*nix伺服器時,通常會檢視以下之內容:

CPU使用率:檢查CPU使用情況,檢視正在處理器使用的百分比。根據具體需求,你可能需要了解CPU總體使用情況以及按流程或使用者劃分的細節,檢視流程和使用者的額外顆粒度,在問題出現時更容易進行故障排除。

記憶體使用情況:總共用了多少記憶體以及單個程式和使用者進和。根據需要,可以按百分比和/或GB/MB監控記憶體之使用情況。

磁碟使用情況:使用了多少磁碟空間。與記憶體使用情況類似,可以按百分比或空間來監控磁碟使用情況。還應該跟蹤inode的使用情況,Inode用於儲存*ix系統中檔案系統物件的資訊。耗盡inode不常見,但還是要檢查一下,如果你碰巧知道伺服器上執行的應用程式往往有很多小檔案,就像一些CI/CD工具那樣。

頁面錯誤:簡單地說,頁面是一塊虛擬記憶體。如果您正在監視由雲服務提供商(例如AWS,GCP,Azure,DigitalOcean或Linode,Aliyun,TengCent Cloud)託管的伺服器,那麼伺服器正在使用分頁系統將伺服器例項的虛擬記憶體對映到實體記憶體來託管它的硬體。頁面錯誤本質上是當作業系統嘗試從實體記憶體向虛擬記憶體載入某些內容時,不存在與該物件關聯的實體記憶體地址時發生的情況。雖然作業系統有一個內建的頁面錯誤處理程式來管理少量的頁面錯誤並不少見,但是如果你經常看到頁面錯誤,該是開始尋找更深層次問題的時候了。

正常執行時間:對於虛擬伺服器,正常執行時間是伺服器執行的時間。監控主要是為了檢視伺服器是否經歷了意外重啟。

網路活動:監控網路流量需要哪些精確度,取決於伺服器託管的內容。在通常情況下,即使執行靜態站點但未主動訪問的伺服器也會看到執行在其上的其他程式的I/O,伺服器網路不應該降到0。

Swap使用:Swap交換空間是保留的磁碟空間,是在可用記憶體不足時補充記憶體使用量。你的系統如何積極地使用交換空間取決於如何在1(低)到100(高)的範圍內配置它的“swappiness”。如果要在系統內出現記憶體問題時允許進行一些交換而不完全禁用它(為0),使用10或更小的值是一個常態。當檢視“交換空間使用情況”時,我們通常會看交換空間使用情況是否顯著上升。如果真是如此,需要查記憶體和其他資源,看看自己是否可以挖掘到原因。

使用 行

經常在管理伺服器時,除了使用的任何監視警報工具之外,更多時候要使用命令列。考慮到這一點,我們總結出一些命令列工具,可以使用這些來檢視剛才說的一些資訊。需要注意的是,並非所有這些命令都安裝在所有 發行版中,你可能需要使用軟體包安裝程式或原始碼來安裝,具體取決於你用的Linux發行版本。

top - 一個很方便的工具,允許我們檢視正常執行時間,記憶體使用情況,CPU使用情況以及交換空間等內容。我們還可以檢視其它資訊:包括其它正在執行的程式,用於執行該程式的命令等。透過按q鍵退出top命令列。

htop - htop 是 中的一個互動的程式檢視器,一個文字模式的應用程式(在控制檯或者X終端中),需要ncurses。與傳統的top相比,htop更加人性化。它可讓使用者互動式操作,支援顏色主題,可橫向或縱向滾動瀏覽程式列表,並支援滑鼠操作。

與top相比,htop有如下的優點:

可以橫向或縱向滾動瀏覽程式列表,以便看到所有的程式和完整的命令列。

在啟動上,比top 更快。

殺程式時不需要輸入程式號。

htop 支援滑鼠操作。

top 有那麼一點老了。。。與top類似,可以透過按 q鍵退出。

tcpdump - 這是一個監控網路資料包的強大工具。例如,我們可以使用它來偵聽伺服器例項上的所有網路流量,或限制為僅偵聽來自特定源和/或目標埠的流量。可以使用 ctrl + C退出。

netstat - 允許我們檢視伺服器上的網路連線的內容和方式,包括將表資訊路由為TCP/UDP連線及其程式。後者的常見組合是 -tlnpu。如果你需要,還可以使用 -c執行命令以進行連續監控。

nmon - a.k.a. Nigel的監控器,允許我們檢視有關伺服器的更詳細的資訊。與htop命令類似,nmon也是互動式的,因此需要透過一系列選單來檢視有關CPU處理器,磁碟等的資訊。退出時,請使用 qctrl + C

uptime - 檢視伺服器執行時間的簡便方法。如果你希望檢視持續時間的正常執行時間而不是伺服器啟動的時間戳,請使用  -pretty引數。

/proc/meminfo - 可以使用自己喜歡的編輯器來檢視此檔案,能夠深入瞭解當前的活動/可用記憶體的使用情況。

free - 要檢視沒有程式資訊的空閒與已用記憶體,請使用free命令。預設情況下,這些值以位元組為單位,如果你希望以兆位元組或千兆位元組的形式檢視輸出,建議附加-h 引數。

df - 允許管理員檢視系統上安裝的所有卷的總磁碟使用情況。預設為1K塊大小,建議附加-h以檢視兆位元組和/或千兆位元組的輸出結果  df -h

du - 以指定目錄中的所有物件(檔案,目錄)遞迴列印檔案系統物件的磁碟使用情況。要注意:如果沒有指定目錄,則使用root根目錄(/),結果很快超過你的終端!如果只想檢視目錄中專案使用了多少磁碟,請使用-sh。

再提示大家留意,根據不同的Linux發行版,你可能需要在軟體包管理器中手動安裝一些工具。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2856258/,如需轉載,請註明出處,否則將追究法律責任。

相關文章