首頁 > 軟體

Linux效能監控及常用命令簡介

2020-06-16 18:02:09

作為DBA,具備一定的Linux伺服器效能監控知識也是很有必要的。有時在伺服器效能瓶頸導致Oracle資料庫效能問題,也就是說在Oracle視角來看幾乎沒有什麼等待或alert log裡的錯誤跟蹤,但系統還是緩慢或使用者反饋系統響應時間相對平時的正常狀態還是明顯的差異,這時我們不放嘗試如下方法來觀察作業系統問題。

Linux伺服器效能監控是管理員很重要的工作,伺服器執行應該提供最佳化的網路效能。在效能突然低於平均的情況,問題可能來自於正在執行的進程、記憶體使用率、磁碟效能、網路流量和CPU負載等情況。因此,理解和優化系統效能是很重要的工作。工作的過程是先檢查整個系統的狀態,然後檢查特定的子系統。

Linux伺服器整體效能監控:
CPU監控
進程監控
記憶體監控
網路監控
i/o監控
 
效能監控的方法:
1、/proc
Linux系統為管理員提供了非常好的方法,使其可以在系統執行時候,線上修改核心引數,而不需要重新引導,這就是通過/proc虛擬檔案系統實現的。/proc虛擬檔案系統是一種核心和核心模組之間用來向進程傳送訊息的機制。該檔案系統允許與核心資料結構進行互動,獲得有關核心和進程的互動資訊。與其他檔案系統不同,/proc存在於記憶體中而不是磁碟中。
/proc檔案系統檔案及目錄與的定義:
 
目錄名稱  目錄內容
apm  高階電源管理資訊
cmdline  核心命令列
Cpuinfo  關於Cpu資訊
Devices  可以用到的裝置(塊裝置/字元裝置)
Dma  使用的DMA通道
Filesystems  支援的檔案系統
Interrupts 中斷的使用
Ioports I/O埠的使用
Kcore  核心核心印象
Kmsg  核心訊息
Ksyms  核心符號表
Loadavg  負載均衡
Locks  核心鎖
Meminfo  記憶體資訊
Misc 雜項
Modules  載入模組列表
Mounts  載入的檔案系統
Partitions  系統識別的分割區表
Rtc  實時時鐘
Slabinfo Slab池資訊
Stat 全面統計狀態表
Swaps  對換空間的利用情況
Version  核心版本
Uptime  系統正常執行時間
 
 
並不是所有這些目錄在你的系統中都有,這取決於你的核心設定和裝載的模組。另外,在 /proc下還有三個很重要的目錄:net,scsi和sys。 Sys目錄是可寫的,可以通過它來存取或修改核心的引數(見下一部分),而net和scsi則依賴於核心設定。例如,如果系統不支援scsi,則scsi 目錄不存在。
 
除了以上介紹的這些,還有的是一些以數位命名的目錄,它們是進程目錄。系統中當前執行的每一個進程都有對應的一個目錄在/proc下,以進程的 PID號為目錄名,它們是讀取進程資訊的介面。而self目錄則是讀取進程本身的資訊介面,是一個link。Proc檔案系統的名字就是由之而起。進程目錄的結構如下:
cmdline 命令列引數
environ 環境變數值
fd 一個包含所有檔案描述符的目錄
Mem 進程的記憶體被利用情況
Stat 進程狀態
Status 進程當前狀態,以可讀的方式顯示出來
Cwd 當前工作目錄的連結
Exe 指向該進程的執行命令檔案
Maps 記憶體映象
Statm 進程記憶體狀態資訊
Root 連結此進程的root目錄
 
使用者如果要檢視系統資訊,可以用cat命令。例如:
# cat /proc/interrupts
 
要改變核心的引數,只要用echo引數重定向到檔案中即可。但是必須很小心,因為可能會造成系統崩潰。最好是先找一台無關緊要的機子,偵錯成功後再應用到你的系統上。下面有一個例子:
# cat /proc/sys/fs/file-max
4096
# echo 8192 > /proc/sys/fs/file-max
# cat /proc/sys/fs/file-max
8192
如果你優化了引數,則可以把它們寫成新增到檔案rc.local中,使它在系統啟動時自動完成修改。
 
 
Proc虛擬檔案系統功能:
1.  進程資訊:系統中任何一個進程,在對應的子目錄中都有一個同名的進程ID,可以找到cmdline,mem,root,stat,statm,status。
2.  系統資訊:如果需要了解整個熊資訊,可以從/proc/stat檔案中獲得。其中包括cpu占用、磁碟空間、記憶體頁、記憶體兌換、中斷、開關、自舉時間等。
3.  CPU資訊:利用/proc/cpuinfo檔案可以獲得cpu當前準確的資訊。
4.  負載資訊:/proc/loadavg包含系統負載資訊。
5.  記憶體資訊:meminfo包含系統記憶體的詳細資訊。其中顯示實體記憶體的數量,可用交換空間數量,閒置記憶體數量等。
 
監測系統負載
 
1、使用uptime命令
使用uptime命令可以檢視系統負載,系統平均負載被定義為在特定的時間間隔內執行佇列中的平均進程數目。如果一個進程在沒有等待i/o操作的結果並主動進入等待狀態,則其位於執行的佇列中。
[root@kt-db2 proc]# uptime
 00:51:59 up 49 days, 17:33,  3 users,  load average: 7.04, 7.83, 9.44
上面顯示最近1分鐘內系統平均負載時7.04,最近5分鐘平均負載是 7.83,最近15分鐘平均負載是 9.44。
 
2、ps命令
linux系統提供了ps及top等工具檢視系統進程資訊的系統呼叫。結合這些系統呼叫可以清晰的了解進程執行狀態,從而採取措施來確保linux系統的效能。他們是目前最常見的進程狀態檢視工具,隨著linux發行版一起安裝使用。下面是ps命令輸出的例子

PID:進程ID
%CPU: CPU負載
%MEM:記憶體占用百分比
VSZ(Virtual  Memory  Size):進程可佔用的記憶體地址空間大小
RSS(Resident  Set  Size):進程實際占用的記憶體地址空間大小
 
但要注意的是:RSS中包括了共用庫占用的記憶體大小,如libc等,我們可以通過pmap命令看到進程呼叫各種庫占用的記憶體大小:
pmap -d  pid 

 
其中r-x--部分屬於程式碼段,在各個進程之間共用。rw---屬於資料段,這才是這個進程真正使用的記憶體。
TTY:次終端號
STAT:進程狀態
START:啟動進程時間
TIME:進程消耗CPU時間
COMMAND:進程名
 
3、監測記憶體使用情況
使用free命令可以監控記憶體使用情況: 

 

以上數位單位為KB,其中32G記憶體總空間,30G交換空間,第三行顯示實體記憶體。Free列顯示沒有使用的記憶體,shared顯示共用記憶體,buffers顯示快取,預設情況下,使用k為單位,可以指定-m引數,使用M單位來進行統計。組合watch命令和free命令用來實時監控記憶體的使用情況:
#watch –n 1 –d free

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2015-04/116414p2.htm


IT145.com E-mail:sddin#qq.com