Linux服務器性能監測是很重要的工作,服務器運行應該提供最有效的系統性能。當服務器系統性能突然低于平均應有的情況,問題可能來自在執行的進程、內存的使用率、磁盤的性能、網絡流量和CPU 的壓力。在預算短缺的今天,理解如何優化系統性能比以往任何時候都重要。要實現它的前提是,你必須充分了解自己的計算機和網絡,從而找到真正的瓶頸所在。本文提供一些基礎的工具來辨別和處理一些性能問題。使用的Linux 發行版本是Red Hat Enterprise Linux 4,工作過程是:首先查看整個系統的狀態,然后是檢查特定的子系統。 Linux服務器進行性能監控有幾種方法,每種方法都各有其優缺點。
?使用SNMP等標準工具
標準及非標準工具能執行一個或多個收集、合并及傳輸階段,如rstatd或SNMP工具,然而標準的rstat后臺程序提供的信息是有限的,速度慢而且效率低。
? 內核模塊
幾個系統監控工程利用內核模塊來存取監控數據。一般情況下,這是很有效的收集系統數據的方法。然而這種方法存在的問題是,當主內核源內有其它改變時,必須保持代碼一致性。一個內核模塊可能與用戶想使用的其它內核模塊相沖突。此外,在使用監控系統之前,用戶必須獲得或申請模塊。
? /proc虛擬文件系統
/proc虛擬文件系統是一個較快的、高效率執行系統監控的方法。使用/proc的主要缺點是必須保持代碼分析與/proc 文件格式改變的同步。事實表明,Linux內核的改變比/proc 文件格式的改變要更頻繁,所以,用/proc虛擬文件系統比用內核模塊存在的問題要少。本文介紹的方法即基于/proc虛擬文件系統。
一、 /proc文件系統特點
Linux 系統向管理員提供了非常好的方法,使他們可以在系統運行時更改內核,而不需要重新引導內核系統。這是通過 /proc 虛擬文件系統實現的。/proc 文件虛擬系統是一種內核和內核模塊用來向進程 (process) 發送信息的機制 (所以叫做 /proc)。這個偽文件系統讓你可以和內核內部數據結構進行交互,獲取 有關進程的有用信息,在運行中 (on the fly) 改變設置 (通過改變內核參數)。 與其他文件系統不同,/proc 存在于內存之中而不是硬盤上。不用重新啟動而去看 CMOS ,就可以知道系統信息。這就是 /proc 的妙處之一。/proc 目錄里主要文件內容,見表-1:
小提示: 每個Linux系統根據軟硬件不同/proc 虛擬文件系統的內容也有些差異。/proc 虛擬文件系統有三個很重要的目錄:net,scsi和sys。Sys目錄是可寫的,可以通過它來訪問或修改內核的參數,而net和scsi則依賴于內核配置。
?使用SNMP等標準工具
標準及非標準工具能執行一個或多個收集、合并及傳輸階段,如rstatd或SNMP工具,然而標準的rstat后臺程序提供的信息是有限的,速度慢而且效率低。
? 內核模塊
幾個系統監控工程利用內核模塊來存取監控數據。一般情況下,這是很有效的收集系統數據的方法。然而這種方法存在的問題是,當主內核源內有其它改變時,必須保持代碼一致性。一個內核模塊可能與用戶想使用的其它內核模塊相沖突。此外,在使用監控系統之前,用戶必須獲得或申請模塊。
? /proc虛擬文件系統
/proc虛擬文件系統是一個較快的、高效率執行系統監控的方法。使用/proc的主要缺點是必須保持代碼分析與/proc 文件格式改變的同步。事實表明,Linux內核的改變比/proc 文件格式的改變要更頻繁,所以,用/proc虛擬文件系統比用內核模塊存在的問題要少。本文介紹的方法即基于/proc虛擬文件系統。
一、 /proc文件系統特點
Linux 系統向管理員提供了非常好的方法,使他們可以在系統運行時更改內核,而不需要重新引導內核系統。這是通過 /proc 虛擬文件系統實現的。/proc 文件虛擬系統是一種內核和內核模塊用來向進程 (process) 發送信息的機制 (所以叫做 /proc)。這個偽文件系統讓你可以和內核內部數據結構進行交互,獲取 有關進程的有用信息,在運行中 (on the fly) 改變設置 (通過改變內核參數)。 與其他文件系統不同,/proc 存在于內存之中而不是硬盤上。不用重新啟動而去看 CMOS ,就可以知道系統信息。這就是 /proc 的妙處之一。/proc 目錄里主要文件內容,見表-1:
![]() |
表-1 |
小提示: 每個Linux系統根據軟硬件不同/proc 虛擬文件系統的內容也有些差異。/proc 虛擬文件系統有三個很重要的目錄:net,scsi和sys。Sys目錄是可寫的,可以通過它來訪問或修改內核的參數,而net和scsi則依賴于內核配置。
不使用Loadrunner同樣也可以監控
二、 系統負載監測
1 使用uptime命令
使用uptime命令可以查看系統負載,系統平均負載被定義為在特定時間間隔內運行隊列中的平均進程數目。如果一個進程滿足以下條件則其就會位于運行隊列中:沒有在等待I/O操作的結果、它沒有主動進入等待狀態(也就是沒有被調用、沒有被停止。
# uptime
9:51pm up 3 days, 4:43, 4 users, load average:6.02, 5.90, 3.94
上面命令顯示示最近1 分鐘內系統的平均負載是6.02,在最近5分鐘內系統的平均負載是5.90,在最近的15 分鐘內系統的平均負載是3.94。一共四個用戶。對于上面的例子來說,由于筆者系統使用是雙CPU,那幺其每個CPU的當前任務數 為:6.02/2=3.01。另外可以使用cron命令進行定時監測系統負載:
# crontab -e
此時打開一個vi編輯器:輸入以下內容:
#30 * * * * * uptime
存盤退出,這樣每隔30分鐘就記載其平均負載,這樣累計一天,我們就可以得到最近一天的平均負載。
2 使用cat /proc/loadavg命令
#cat /proc/loadavg
0.40 0.79 0.70 2/245 4101
Cat /proc/loadavg提供以下數據:
1秒鐘平均負載;5秒鐘平均負載;15秒鐘平均負載;總作業數;正在運行的作業總數。
3 使用cat /proc/stat命令
# cat /proc/stat
cpu 16015 1353 28840 101677 3602 664 4323
cpu0 16015 1353 28840 101677 3602 664 4323
intr 1605646 1565008 52 0 4 4 0 6 0 1 8664 296 16675 1418 0 0 13518
ctxt 617320
btime 1178342189
processes 4236
procs_running 2
procs_blocked 0
cat /proc/stat命令是包含內核統計量,提供以下數據:
CPU 以及CPU0、每行的每個參數意思(以第一行為例)為:
user (432661) 從系統啟動開始累計到當前時刻,用戶態的CPU時間(單位:jiffies) ,不包含 nice值為負進程。1 jiffies=0.01秒
nice (13295) 從系統啟動開始累計到當前時刻,nice值為負的進程所占用的CPU時間(單位:jiffies)
system (86656) 從系統啟動開始累計到當前時刻,核心時間(單位:jiffies)
idle (422145968) 從系統啟動開始累計到當前時刻,除硬盤IO等待時間以外其它等待時間(單位:jiffies)
iowait (171474) 從系統啟動開始累計到當前時刻,硬盤IO等待時間(單位:jiffies) ,
irq (233) 從系統啟動開始累計到當前時刻,硬中斷時間(單位:jiffies)
softirq (5346) 從系統啟動開始累計到當前時刻,軟中斷時間(單位:jiffies)
CPU時間=user+system+nice+idle+iowait+irq+softirq
“intr”這行給出中斷的信息,第一個為自系統啟動以來,發生的所有的中斷的次數;然后每個數對應一個特定的中斷自系統啟動以來所發生的次數。
“ctxt”給出了自系統啟動以來CPU發生的上下文交換的次數。
“btime”給出了從系統啟動到現在為止的時間,單位為秒。
“processes (total_forks) 自系統啟動以來所創建的任務的個數目。
“procs_running”:當前運行隊列的任務的數目。
“procs_blocked”:當前被阻塞的任務的數目。
4 使用xload圖形顯示系統負載
如果安裝了KDE環境,可以使用xload 顯示系統平均負載的柱狀圖 ,它會定期地更新。xload是Linux一個系統命令,使用方法:
# xload [-options ...]
xload 主要選項和說明:
應用實例:
#xload –scale 1 –update 1 –fg red –hl400
上面命令表示使用xload查看系統的負載。每秒更新一次,其尺寸大小為400,前景顏色為紅色,背景顏色為藍。見圖-1。

1 使用uptime命令
使用uptime命令可以查看系統負載,系統平均負載被定義為在特定時間間隔內運行隊列中的平均進程數目。如果一個進程滿足以下條件則其就會位于運行隊列中:沒有在等待I/O操作的結果、它沒有主動進入等待狀態(也就是沒有被調用、沒有被停止。
# uptime
9:51pm up 3 days, 4:43, 4 users, load average:6.02, 5.90, 3.94
上面命令顯示示最近1 分鐘內系統的平均負載是6.02,在最近5分鐘內系統的平均負載是5.90,在最近的15 分鐘內系統的平均負載是3.94。一共四個用戶。對于上面的例子來說,由于筆者系統使用是雙CPU,那幺其每個CPU的當前任務數 為:6.02/2=3.01。另外可以使用cron命令進行定時監測系統負載:
# crontab -e
此時打開一個vi編輯器:輸入以下內容:
#30 * * * * * uptime
存盤退出,這樣每隔30分鐘就記載其平均負載,這樣累計一天,我們就可以得到最近一天的平均負載。
2 使用cat /proc/loadavg命令
#cat /proc/loadavg
0.40 0.79 0.70 2/245 4101
Cat /proc/loadavg提供以下數據:
1秒鐘平均負載;5秒鐘平均負載;15秒鐘平均負載;總作業數;正在運行的作業總數。
3 使用cat /proc/stat命令
# cat /proc/stat
cpu 16015 1353 28840 101677 3602 664 4323
cpu0 16015 1353 28840 101677 3602 664 4323
intr 1605646 1565008 52 0 4 4 0 6 0 1 8664 296 16675 1418 0 0 13518
ctxt 617320
btime 1178342189
processes 4236
procs_running 2
procs_blocked 0
cat /proc/stat命令是包含內核統計量,提供以下數據:
CPU 以及CPU0、每行的每個參數意思(以第一行為例)為:
user (432661) 從系統啟動開始累計到當前時刻,用戶態的CPU時間(單位:jiffies) ,不包含 nice值為負進程。1 jiffies=0.01秒
nice (13295) 從系統啟動開始累計到當前時刻,nice值為負的進程所占用的CPU時間(單位:jiffies)
system (86656) 從系統啟動開始累計到當前時刻,核心時間(單位:jiffies)
idle (422145968) 從系統啟動開始累計到當前時刻,除硬盤IO等待時間以外其它等待時間(單位:jiffies)
iowait (171474) 從系統啟動開始累計到當前時刻,硬盤IO等待時間(單位:jiffies) ,
irq (233) 從系統啟動開始累計到當前時刻,硬中斷時間(單位:jiffies)
softirq (5346) 從系統啟動開始累計到當前時刻,軟中斷時間(單位:jiffies)
CPU時間=user+system+nice+idle+iowait+irq+softirq
“intr”這行給出中斷的信息,第一個為自系統啟動以來,發生的所有的中斷的次數;然后每個數對應一個特定的中斷自系統啟動以來所發生的次數。
“ctxt”給出了自系統啟動以來CPU發生的上下文交換的次數。
“btime”給出了從系統啟動到現在為止的時間,單位為秒。
“processes (total_forks) 自系統啟動以來所創建的任務的個數目。
“procs_running”:當前運行隊列的任務的數目。
“procs_blocked”:當前被阻塞的任務的數目。
4 使用xload圖形顯示系統負載
如果安裝了KDE環境,可以使用xload 顯示系統平均負載的柱狀圖 ,它會定期地更新。xload是Linux一個系統命令,使用方法:
# xload [-options ...]
xload 主要選項和說明:
![]() |
應用實例:
#xload –scale 1 –update 1 –fg red –hl400
上面命令表示使用xload查看系統的負載。每秒更新一次,其尺寸大小為400,前景顏色為紅色,背景顏色為藍。見圖-1。

使用非Loadrunner工具監控
三、 通過phpsysinfo 調用瀏覽器監控
由于/proc文件系統非常大,而且系統是動態變化的,所以使用Linux命令比較麻煩,這里我們使用一個工具:phpsysinfo,它是一個支持PHP網頁服務器用于偵測主機一些資料的PHP 腳本工具軟件,可以提取/proc文件系統中的信息,以圖形方式顯示出來。另外phpsysinfo支持包括中文在內的20多種語言和許多風格的模板。
1.系統要求:
除了要搭建一個基于LAMP(Linux+PHP+APACHE+MYSQL)的網絡構架,其它系統要求:軟件:它要求內核(Kenerl)至少在2.2以上。KDE 2.0,桌面顏色至少16位增強色。硬件:中央處理器:奔騰II 450 以上 ,內存 64 兆 ,硬盤空間 60兆。安裝前的準備工作: phpsysinfo 是用PHP語言寫成的。
2.軟件下載:
#wgethttp://jaist.dl.sourceforge.net/sourceforge/phpsysinfo/phpsysinfo-2.3.tar.gz
3. 軟件安裝: 將下載的軟件拷貝到/var/www/html/目錄下,執行:
#mv phpsysinfo-2.3.tar.gz /var/www/html/sysinfo
#tar -zxvf phpsysinfo-2.3.tar.gz
#cd sysinfo
#cp config.php.new config.php
4.運行軟件:
啟動apache服務
#/usr/local/apache2/bin/apachectl start
測試http://localhost/sysinfo(見圖2)
phpsysinfo檢測分成五個部分:
(1)主機系統資源:主機名稱、IP地址、內核版本、已開機時間、登入人數、系統負載。
(2)硬件信息:CPU型號、工作頻率、快取大小、邏輯操作數、PCI接口、IDE接口、SCSI接口。
(3)網絡負載:網絡數據包接收、傳送、錯誤/遺失。
(4)內存資源情況,包括物理內存、虛擬內存等。
(5)已掛載分區:硬盤分區名稱,使用比例。
你也可以用它來測試你所租用的虛擬主機的設備及網絡狀況的品質。
原文:http://space.itpub.net/12639375/viewspace-160027
由于/proc文件系統非常大,而且系統是動態變化的,所以使用Linux命令比較麻煩,這里我們使用一個工具:phpsysinfo,它是一個支持PHP網頁服務器用于偵測主機一些資料的PHP 腳本工具軟件,可以提取/proc文件系統中的信息,以圖形方式顯示出來。另外phpsysinfo支持包括中文在內的20多種語言和許多風格的模板。
1.系統要求:
除了要搭建一個基于LAMP(Linux+PHP+APACHE+MYSQL)的網絡構架,其它系統要求:軟件:它要求內核(Kenerl)至少在2.2以上。KDE 2.0,桌面顏色至少16位增強色。硬件:中央處理器:奔騰II 450 以上 ,內存 64 兆 ,硬盤空間 60兆。安裝前的準備工作: phpsysinfo 是用PHP語言寫成的。
2.軟件下載:
#wgethttp://jaist.dl.sourceforge.net/sourceforge/phpsysinfo/phpsysinfo-2.3.tar.gz
3. 軟件安裝: 將下載的軟件拷貝到/var/www/html/目錄下,執行:
#mv phpsysinfo-2.3.tar.gz /var/www/html/sysinfo
#tar -zxvf phpsysinfo-2.3.tar.gz
#cd sysinfo
#cp config.php.new config.php
4.運行軟件:
啟動apache服務
#/usr/local/apache2/bin/apachectl start
測試http://localhost/sysinfo(見圖2)
圖2 phpsysinfo的中文工作界面 |
phpsysinfo檢測分成五個部分:
(1)主機系統資源:主機名稱、IP地址、內核版本、已開機時間、登入人數、系統負載。
(2)硬件信息:CPU型號、工作頻率、快取大小、邏輯操作數、PCI接口、IDE接口、SCSI接口。
(3)網絡負載:網絡數據包接收、傳送、錯誤/遺失。
(4)內存資源情況,包括物理內存、虛擬內存等。
(5)已掛載分區:硬盤分區名稱,使用比例。
你也可以用它來測試你所租用的虛擬主機的設備及網絡狀況的品質。
原文:http://space.itpub.net/12639375/viewspace-160027