linux服务器历险之linux性能监控
linux服務器歷險之linux性能監控?
1、uptimeuptime命令用于查看服務器運行了多長時間以及有多少個用戶登錄,快速獲知服務器的負荷情況。
uptime的輸出包含一項內容是load average,顯示了最近1-,5-,15分鐘的負荷情況。它的值代表等待CPU處理的進程數,如果CPU沒有時間處理這些進程,load average值會升高;反之則會降低。
load average的最佳值是1,說明每個進程都可以馬上處理并且沒有CPU cycles被丟失。對于單CPU的機器,1或者2是可以接受的值;對于多路CPU的機器,load average值可能在8到10之間。
也可以使用uptime命令來判斷網絡性能。例如,某個網絡應用性能很低,通過運行uptime查看服務器的負荷是否很高,如果不是,那么問題應該是網絡方面造成的。
下邊是uptime的輸出樣式
2、dmesg
dmesg命令主要用來顯示內核信息。使用dmesg可以有效診斷機器硬件故障或者添加硬件出現的問題。
另外,使用dmesg可以確定您的服務器安裝了那些硬件。每次系統重啟,系統都會檢查所有硬件并將信息記錄下來。執行/bin/dmesg命令可以查看該記錄。
3,top
top命令顯示處理器的活動狀況。缺省情況下,顯示占用CPU最多的任務,并且每隔5秒鐘做一次刷新。
3.1 Process priority and nice levels
Process priority的數值決定了CPU處理進程的順序。LIUNX內核會根據需要調整該數值的大小。nice value局限于priority。priority的值不能低于nice value(nice value值越低,優先級越高)。您不可以直接修改Process priority的值,但是可以通過調整nice level值來間接地改變Process priority值,然而這一方法并不是所有時候都可用。如果某個進程運行異常的慢,可以通過降低nice level為該進程分配更多的CPU。
Linux 支持的 nice levels 由19 (優先級低)到-20 (優先級高),缺省值為0。
Top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似于Windows的任務管理器。下面詳細介紹它的使用方法。
?
| top - 01:06:48 up? 1:22,? 1 user,? load average: 0.06, 0.60, 0.48 Tasks:? 29 total,?? 1 running,? 28 sleeping,?? 0 stopped,?? 0 zombie Cpu(s):? 0.3% us,? 1.0% sy,? 0.0% ni, 98.7% id,? 0.0% wa,? 0.0% hi,? 0.0% si Mem:??? 191272k total,?? 173656k used,??? 17616k free,??? 22052k buffers Swap:?? 192772k total,??????? 0k used,?? 192772k free,?? 123988k cached ?? PID USER????? PR? NI? VIRT? RES? SHR S %CPU %MEM??? TIME+? COMMAND ? 1379 root????? 16?? 0? 7976 2456 1980 S? 0.7? 1.3?? 0:11.03 sshd 14704 root????? 16?? 0? 2128? 980? 796 R? 0.7? 0.5?? 0:02.72 top ???? 1 root????? 16?? 0? 1992? 632? 544 S? 0.0? 0.3?? 0:00.90 init ???? 2 root????? 34? 19???? 0??? 0??? 0 S? 0.0? 0.0?? 0:00.00 ksoftirqd/0 ???? 3 root????? RT?? 0???? 0??? 0??? 0 S? 0.0? 0.0?? 0:00.00 watchdog/0 |
統計信息區
前五行是系統整體的統計信息。第一行是任務隊列信息,同 uptime 命令的執行結果。其內容如下:
| |
| Tasks: 29 total進程總數 1 running正在運行的進程數 28 sleeping睡眠的進程數 0 stopped停止的進程數 0 zombie僵尸進程數 Cpu(s): 0.3% us用戶空間占用CPU百分比 1.0% sy內核空間占用CPU百分比 0.0% ni用戶進程空間內改變過優先級的進程占用CPU百分比 98.7% id空閑CPU百分比 0.0% wa等待輸入輸出的CPU時間百分比 0.0% hi 0.0% si |
| Mem: 191272k total物理內存總量 173656k used使用的物理內存總量 17616k free空閑內存總量 22052k buffers用作內核緩存的內存量 Swap: 192772k total交換區總量 0k used使用的交換區總量 192772k free空閑交換區總量 123988k cached緩沖的交換區總量。 內存中的內容被換出到交換區,而后又被換入到內存,但使用過的交換區尚未被覆蓋, 該數值即為這些內容已存在于內存中的交換區的大小。 相應的內存再次被換出時可不必再對交換區寫入。 |
進程信息區
統計信息區域的下方顯示了各個進程的詳細信息。首先來認識一下各列的含義。
| |
更改顯示內容
通過 f 鍵可以選擇顯示的內容。按 f 鍵之后會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最后按回車鍵確定。
按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最后按回車鍵確定。
按大寫的 F 或 O 鍵,然后按 a-z 可以將進程按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。
命令使用
1. 工具(命令)名稱
top
2.工具(命令)作用
顯示系統當前的進程和其他狀況; top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前臺執行該命令,它將獨占前臺,直到用戶終止該程序為止. 比較準確的說,top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU使用.內存使用和執行時間 對任務進行排序;而且該命令的很多特性都可以通過交互式命令或者在個人定制文件中進行設定.
3.環境設置
在Linux下使用。
4.使用方法
4.1使用格式
top [-] [d] [p] [q] [c] [C] [S] [s]? [n]
4.2參數說明
? d 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。
? p 通過指定監控進程ID來僅僅監控某個進程的狀態。
? q 該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶權限,那么top將以盡可能高的優先級運行。
? S 指定累計模式
? s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
? i ? 使top不顯示任何閑置或者僵死進程。
? c ? 顯示整個命令行而不只是顯示命令名
4.3其他
下面介紹在top命令執行過程中可以使用的一些交互命令。從使用角度來看,熟練的掌握這些命令比掌握選項還重要一些。這些命令都是單字母的,如果在命令行選項中使用了s選項,則可能其中一些命令會被屏蔽掉。
Ctrl+L 擦除并且重寫屏幕。
h或者? 顯示幫助畫面,給出一些簡短的命令總結說明。
k 終止一個進程。系統將提示用戶輸入需要終止的進程PID,以及需要發送給該進程什么樣的信號。一般的終止進程可以使用15信號;如果不能正常結束那就使用信號9強制結束該進程。默認值是信號15。在安全模式中此命令被屏蔽。
i 忽略閑置和僵死進程。這是一個開關式命令。
q 退出程序。
r 重新安排一個進程的優先級別。系統提示用戶輸入需要改變的進程PID以及需要設置的進程優先級值。輸入一個正值將使優先級降低,反之則可以使該進程擁有更高的優先權。默認值是10。
S 切換到累計模式。
s 改變兩次刷新之間的延遲時間。系統將提示用戶輸入新的時間,單位為s。如果有小數,就換算成m s。輸入0值則系統將不斷刷新,默認值是5 s。需要注意的是如果設置太小的時間,很可能會引起不斷刷新,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。
f或者F 從當前顯示中添加或者刪除項目。
o或者O 改變顯示項目的順序。
l 切換顯示平均負載和啟動時間信息。
m 切換顯示內存信息。
t 切換顯示進程和CPU狀態信息。
c 切換顯示命令名稱和完整命令行。
M 根據駐留內存大小進行排序。
P 根據CPU使用百分比大小進行排序。
T 根據時間/累計時間進行排序。
W 將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。
4、iostat
iostat由Red Hat Enterprise Linux AS發布。同時iostat也是Sysstat的一部分,可以下載到,網址是http://perso.wanadoo.fr/sebastien.godard/
執行iostat命令可以從系統啟動之后的CPU平均時間,類似于uptime。除此之外,iostat還對創建一個服務器磁盤子系統的活動報告。該報告包含兩部分:CPU使用情況和磁盤使用情況。
下邊是iostat的輸出樣式
CPU占用情況包括四塊內容
%user:顯示user level (applications)時,CPU的占用情況。
%nice:顯示user level在nice priority時,CPU的占用情況。
%sys:顯示system level (kernel)時,CPU的占用情況。
%idle: 顯示CPU空閑時間所占比例。
磁盤使用報告分成以下幾個部分:
Device: 塊設備的名字
tps: 該設備每秒I/O傳輸的次數。多個I/O請求可以組合為一個,每個I/O請求傳輸的字節數不同,因此可以將多個I/O請求合并為一個。
Blk_read/s, Blk_wrtn/s: 表示從該設備每秒讀寫的數據塊數量。塊的大小可以不同,如1024, 2048 或 4048字節,這取決于partition的大小。
例如,執行下列命令獲得設備/dev/sda1 的數據塊大小:
dumpe2fs -h /dev/sda1 |grep -F "Block size"
輸出結果如下
dumpe2fs 1.34 (25-Jul-2003)
Block size: 1024
Blk_read, Blk_wrtn: 指示自從系統啟動之后數據塊讀/寫的合計數。
5、vmstat
vmstat提供了processes, memory, paging, block I/O, traps和CPU的活動狀況.
下邊是vmstat的輸出樣式
各輸出列的含義:
Process
– r: The number of processes waiting for runtime.
– b: The number of processes in uninterruptable sleep.
Memory
– swpd: The amount of virtual memory used (KB).
– free: The amount of idle memory (KB).
– buff: The amount of memory used as buffers (KB).
Swap
– si: Amount of memory swapped from the disk (KBps).
– so: Amount of memory swapped to the disk (KBps).
IO
– bi: Blocks sent to a block device (blocks/s).
– bo: Blocks received from a block device (blocks/s).
System
– in: The number of interrupts per second, including the clock.
– cs: The number of context switches per second.
CPU (these are percentages of total CPU time)
- us: Time spent running non-kernel code (user time, including nice time).
– sy: Time spent running kernel code (system time).
– id: Time spent idle. Prior to Linux 2.5.41, this included IO-wait time.
– wa: Time spent waiting for IO. Prior to Linux 2.5.41, this appeared as zero.
?
使甩vmstat命令監視虛擬內存使用情況
?
vmstat 是Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的虛擬內存、進程、CPU活動進行監視。它是對系統的整體情況進行統計,不足之處是無法對某個 進程進行深入分析。通常使用vmstat 5 5(表示在5秒時間內進行5次采樣)命令測試。將得到一個數據匯總它可以反映真正的系統情況。
?
| #vmstat 5 5 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 62792 3460 9116 88092 6 30 189 89 1061 569 17 28 54 2 0 0 62792 3400 9124 88092 0 0 0 14 884 434 4 14 81 0 0 0 62792 3400 9132 88092 0 0 0 14 877 424 4 15 81 0 1 0 62792 3400 9140 88092 0 0 0 14 868 418 6 20 74 0 1 0 62792 3400 9148 88092 0 0 0 15 847 400 9 25 67 0 |
?
vmstat命令輸出分成六個部分:
?
(1)進程procs:
r:在運行隊列中等待的進程數 。
b:在等待io的進程數 。
?
(2)內存memoy:
?
swpd:現時可用的交換內存(單位KB)。
?
free:空閑的內存(單位KB)。
?
buff: 緩沖去中的內存數(單位:KB)。
?
cache:被用來做為高速緩存的內存數(單位:KB)。
?
(3) swap交換頁面
?
si: 從磁盤交換到內存的交換頁數量,單位:KB/秒。
?
so: 從內存交換到磁盤的交換頁數量,單位:KB/秒。
?
(4) io塊設備:
?
bi: 發送到塊設備的塊數,單位:塊/秒。
?
bo: 從塊設備接收到的塊數,單位:塊/秒。
?
(5)system系統:
?
in: 每秒的中斷數,包括時鐘中斷。
?
cs: 每秒的環境(上下文)切換次數。
?
(6)cpu中央處理器:
cs:用戶進程使用的時間 。以百分比表示。
sy:系統進程使用的時間。 以百分比表示。
id:中央處理器的空閑時間 。以百分比表示。
?
如果 r經常大于 4 ,且id經常小于40,表示中央處理器的負荷很重。 如果bi,bo 長期不等于0,表示物理內存容量太小
6 sar
sar是Red Hat Enterprise Linux AS發行的一個工具,同時也是Sysstat工具集的命令之一,可以從以下網址下載:http://perso.wanadoo.fr/sebastien.godard/
sar用于收集、報告或者保存系統活動信息。sar由三個應用組成:sar顯示數據、sar1和sar2用于收集和保存數據。
使用sar1和sar2,系統能夠配置成自動抓取信息和日志,以備分析使用。配置舉例:在/etc/crontab中添加如下幾行內容
同樣的,你也可以在命令行方式下使用sar運行實時報告。如圖所示:
從收集的信息中,可以得到詳細的CPU使用情況(%user, %nice, %system, %idle)、內存頁面調度、網絡I/O、進程活動、塊設備活動、以及interrupts/second
7 free
/bin/free命令顯示所有空閑的和使用的內存數量,包括swap。同時也包含內核使用的緩存。
8 pmap
pmap可以報告某個或多個進程的內存使用情況。使用pmap判斷主機中哪個進程因占用過多內存導致內存瓶頸。圖14-9顯示了SUSE LINUX
Enterprise Server下pmap命令執行結果
pmap -x <pid>
圖14-10顯示了smbd進程所占用的內存
pmap <pid>
?
9 mpstat
mpstat是Sysstat工具集的一部分,下載地址是http://perso.wanadoo.fr/sebastien.godard/
mpstat用于報告多路CPU主機的每顆CPU活動情況,以及整個主機的CPU情況。
例如,下邊的命令可以隔2秒報告一次處理器的活動情況,執行3次
mpstat 2 3
如下命令每隔1秒顯示一次多路CPU主機的處理器活動情況,執行3次
mpstat -P ALL 1 3
總結
以上是生活随笔為你收集整理的linux服务器历险之linux性能监控的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ORACLE 数据库性能 与裸设备
- 下一篇: Linux下重要目录功能介绍