歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux性能監控及常用命令簡介

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

日期:2017/2/28 14:21:31   编辑:Linux教程

作為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

Copyright © Linux教程網 All Rights Reserved