歡迎您光臨本站 註冊首頁

分析Linux伺服器性能的工具 sysstat

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

在使用UNIX操作系統的過程中,我們常常會用到各種各樣的問題,比如系統運行速度 突然變慢,系統容易死機或者主機所帶的終端常出現死機,這時我們常常猜測,是硬碟空間太小,還是內存不足?I/O出現瓶頸,或者是系統的核心參數出了問題?這時,我們應該考慮使用系統給我們提供的sar命令來對系統作一個了解,該命令是系統維護 的重要工具,主要幫助我們掌握系統資源的使用情況,特別是內存和CPU 的使用情況, 是UNIX系統使用者應該掌握的工具之一.

sysstat安裝包安裝之後有iostat,mpstat,sar,sa功能

/etc/init.d/sysstat start

chkconfig sysstat on

sysstat工具包中包含兩類工具

即時查看工具: iostat,mpstat,sar

累計統計工具:sar

sar是核心工具

mpstat 是Multiprocessor Statistics的縮寫,是實時系統監控工具.其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中.在多CPUs系統里,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息

%user 用戶CPU時間 ,不含nice時間

%nice nice值為負進程的CPU時間

%sys 系統內核時間

%iowait 硬碟I/O等待時間

%irq 軟終端時間

%soft軟終端時間

%steal

%idle CPU除去等待磁碟I/O操作外的空間閑置時間

CPU ALL總時間

sar功能

1、sar -u 1 5

輸出CPU使用情況的統計信息,每秒輸出一次,一共輸出100次
17時06分01秒 CPU %user %nice %system %iowait %idle
17時06分02秒 all 1.27 0.00 0.51 1.01 97.22
17時06分03秒 all 0.00 0.00 0.00 0.00 100.00
17時06分04秒 all 0.00 0.00 0.00 0.00 100.00
17時06分05秒 all 0.25 0.00 0.00 0.00 99.75
17時06分06秒 all 0.00 0.00 0.00 0.51 99.49
Average: all 0.30 0.00 0.10 0.30 99.29
CPU all 表示統計信息為所有 CPU 的平均值.
%user 顯示在用戶級別(application)運行使用 CPU 總時間的百分比.
%nice 顯示在用戶級別,用於nice操作,所佔用 CPU 總時間的百分比.
%system 在核心級別(kernel)運行所使用 CPU 總時間的百分比.

%iowait 顯示用於等待I/O操作佔用 CPU 總時間的百分比.
%steal 管理程序(hypervisor)為另一個虛擬進程提供服務而等待虛擬 CPU 的百分比.
%idle 顯示 CPU 空閑時間佔用 CPU 總時間的百分比.
tips:
若 %iowait 的值過高,表示硬碟存在I/O瓶頸
若 %idle 的值高但系統響應慢時,有可能是 CPU 等待分配內存,此時應加大內存容量

若 %idle 的值持續低於 10,則系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU.
2、sar -b 1 5
顯示I/O和傳送速率的統計信息
17時09分07秒 tps rtps wtps bread/s bwrtn/s
17時09分08秒 3.12 3.12 0.00 25.00 0.00
17時09分09秒 89.58 6.25 83.33 141.67 733.33

17時09分10秒 42.71 9.38 33.33 141.67 600.00
17時09分11秒 2.11 2.11 0.00 16.84 0.00
17時09分12秒 1.04 0.00 1.04 0.00 175.00
Average: 27.77 4.18 23.59 65.14 302.30
tps 每秒鐘物理設備的 I/O 傳輸總量
rtps 每秒鐘從物理設備讀入的數據總量

wtps 每秒鐘向物理設備寫入的數據總量
bread/s 每秒鐘從物理設備讀入的數據量,單位為 塊/s
bwrtn/s 每秒鐘向物理設備寫入的數據量,單位為 塊/s
3、sar -c
每秒鐘創建的進程數
15時10分01秒 1.35
15時20分01秒 1.01
15時30分01秒 0.59
15時40分01秒 1.35
15時50分01秒 0.99
16時00分01秒 0.57
16時10分01秒 1.33
16時20分01秒 1.02
16時30分01秒 0.57
16時40分01秒 1.33
16時50分01秒 1.07
17時00分01秒 0.56
17時10分01秒 1.32
4、sar -n DEV 1 5
輸出網路設備狀態的統計信息
17時13分42秒 IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
17時13分43秒 eth1 3669.70 4156.57 368362.63 2747714.14 0.00 0.00 0.00
17時13分44秒 eth1 2689.11 2585.15 289661.39 701461.39 0.00 0.00 0.00
17時13分45秒 eth1 3746.00 4077.00 415178.00 2605720.00 0.00 0.00 0.00
17時13分46秒 eth1 3096.00 3241.00 327916.00 1597320.00 0.00 0.00 0.00
17時13分47秒 eth1 2910.00 2834.00 312632.00 957903.00 0.00 0.00 0.00

Average: eth1 3220.20 3375.60 342592.60 1717931.20 0.00 0.00 0.00
IFACE 網路設備名
rxpck/s 每秒接收的包總數
txpck/s 每秒傳輸的包總數
rxbyt/s 每秒接收的位元組(byte)總數
txbyt/s 每秒傳輸的位元組(byte)總數
rxcmp/s 每秒接收壓縮包的總數
txcmp/s 每秒傳輸壓縮包的總數
rxmcst/s 每秒接收的多播(multicast)包的總數
5、sar -q 1 5
輸出進程隊列長度和平均負載狀態統計信息
17時16分28秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
17時16分29秒 0 160 0.26 0.11 0.03

17時16分30秒 0 160 0.26 0.11 0.03
17時16分31秒 0 160 0.24 0.11 0.03
17時16分32秒 0 160 0.24 0.11 0.03
17時16分33秒 0 160 0.24 0.11 0.03
Average: 0 160 0.25 0.11 0.03
runq-sz 運行隊列的長度(等待運行的進程數)

plist-sz 進程列表中進程(processes)和線程(threads)的數量
ldavg-1 1分鐘的系統平均負載(System load average)
ldavg-5 過去5分鐘的系統平均負載
ldavg-15 過去15分鐘的系統平均負載
6、sar -r
輸出內存和交換空間的統計信息

iostat

顯示一條包括所有的CPU和設備吞吐率的統計信息

常用選項

-c 僅顯示CPU統計信息

-d 僅顯示磁碟統計信息

-k 以KB顯示每秒磁碟請求數

-m 以MB顯示每秒磁碟請求數

-p 用於顯示塊設備以及系統分區的統計信息

tps:該設備每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.).“一次傳輸”意思是“一次I/O請求”.多個邏輯請求可能會被合併為“一次I/O請求”.“一次傳輸”請求的大小是未知的.

kB_read/s:每秒從設備(drive expressed)讀取的數據量;kB_wrtn/s:每秒向設備(drive expressed)寫入的數據量;kB_read:讀取的總數據量;kB_wrtn:寫入的總數量數據量;這些單位都為Kilobytes.

rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了(當系統調用需要讀取數據的時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的數據,FS會將這個請求合併Merge);wrqm/s:每秒這個設備相關的寫入請求有多少被Merge了.


rsec/s:每秒讀取的扇區數;wsec/:每秒寫入的扇區數.r/s:The number of read requests that were issued to the device per second;w/s:The number of write requests that were issued to the device per second;

await:每一個IO請求的處理的平均時間(單位是微秒毫秒).這裡可以理解為IO的響應時間,一般地系統IO響應時間應該低於5ms,如果大於10ms就比較大了.

%util:在統計時間內所有處理IO時間,除以總共統計時間.例如,如果統計間隔1秒,該設備有0.8秒在處理IO,而0.2秒閑置,那麼該設備的%util = 0.8/1 = 80%,該參數暗示了設備的繁忙程度.一般地,如果該參數是100%表示設備已經接近滿負荷運行了(當然如果是多磁碟,即使%util是100%,磁碟的併發能力,磁碟使用未必就到了瓶頸).

常見用法:

$iostat -d -k 1 10 #查看TPS和吞吐量信息 iostat -d -x -k 1 10 #查看設備使用率(%util)、響應時間(await) iostat -c 1 10

iostat -d -x -l

磁碟的平均響應時間<5ms>80.磁碟響應正常,但是已經很繁忙了.

iostat -d 5 每隔五秒顯示

本文出自 「DZ」 博客,請務必保留此出處http://dongyahu.blog.51cto.com/4990650/851914


[火星人 ] 分析Linux伺服器性能的工具 sysstat已經有610次圍觀

http://coctec.com/docs/linux/show-post-45834.html