天天看點

Linux系統性能監控之I/Odisk I/Onetwork

I/O子系統是作業系統中最慢的部分。

disk I/O

  • df指令

    檢查檔案系統的磁盤空間占用情況

  • du 指令

    du能以指定的目錄下的子目錄為機關,顯示每個目錄内所有檔案所占用的磁盤空間大小

  • iostat指令

    常用參數 -x -d

    Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
    xvda                                               
               

    rrqm/s: 每秒進行 merge 的讀操作數目。即 delta(rmerge)/s

    wrqm/s: 每秒進行 merge 的寫操作數目。即 delta(wmerge)/s

    r/s: 每秒完成的讀 I/O 裝置次數。即 delta(rio)/s

    w/s: 每秒完成的寫 I/O 裝置次數。即 delta(wio)/s

    rsec/s: 每秒讀扇區數。即 delta(rsect)/s

    wsec/s: 每秒寫扇區數。即 delta(wsect)/s

    rkB/s: 每秒讀K位元組數。是 rsect/s 的一半,因為每扇區大小為512位元組。(需要計算)

    wkB/s: 每秒寫K位元組數。是 wsect/s 的一半。(需要計算)

    avgrq-sz: 平均每次裝置I/O操作的資料大小 (扇區)。delta(rsect+wsect)/delta(rio+wio)

    avgqu-sz: 平均I/O隊列長度。即 delta(aveq)/s/1000 (因為aveq的機關為毫秒)。

    await: 平均每次裝置I/O操作的等待時間 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)

    svctm: 平均每次裝置I/O操作的服務時間 (毫秒)。即 delta(use)/delta(rio+wio)

    %util: 一秒中有百分之多少的時間用于 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的。即 delta(use)/s/1000 (因為use的機關為毫秒)

    如果%util接近100%,說明産生的I/O請求太多,I/O系統已經滿負荷,該磁盤

    可能存在瓶頸;idle小于70% IO壓力就較大了,一般讀取速度有較多的wait。

    同時可以結合vmstat 檢視檢視b參數(等待資源的程序數)和wa參數(IO等待所占用的CPU時間的百分比,高過30%時IO壓力高)

  • sar指令

network

  • netstat指令

    netstat 指令用于顯示各種網絡相關資訊,如網絡連接配接,路由表,接口狀态 (Interface Statistics),masquerade 連接配接,多點傳播成員 (Multicast Memberships) 等等。

    常見參數

    -a (all)顯示所有選項,預設不顯示LISTEN相關

    -t (tcp)僅顯示tcp相關選項

    -u (udp)僅顯示udp相關選項

    -n 拒絕顯示别名,能顯示數字的全部轉化成數字。

    -l 僅列出有在 Listen (監聽) 的服務狀态

    -p 顯示建立相關連結的程式名

    -r 顯示路由資訊,路由表

    -e 顯示擴充資訊,例如uid等

    -s 按各個協定進行統計

    -c 每隔一個固定時間,執行該netstat指令。

    提示:LISTEN和LISTENING的狀态隻有用-a或者-l才能看到

  • sar指令
    sar -n SOCK
    04:15:01 PM    totsck    tcpsck    udpsck    rawsck   ip-frag    tcp-tw
    04:16:01 PM     24002      1931         2         0         0     42858
               

    totsck: Total number of sockets used by the system.

    tcpsck: Number of TCP sockets currently in use.

    sar -n DEV
    :: PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    :: PM        lo                                        
               

    rxpck/s Total number of packets received per second.

    txpck/s Total number of packets transmitted per second.

    rxbyt/s Total number of bytes received per second.

    txbyt/s Total number of bytes transmitted per second.

  • lsof指令

    可以列出被程序打開的檔案的資訊

    lsof
    COMMAND     PID        USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
    init                  root  cwd       DIR                ,                /
    init                  root  rtd       DIR                ,                /
    init                  root  txt       REG                ,         /sbin/init
    udevd               root    u      CHR                ,      t0        /dev/null
    udevd               root    u      CHR                ,      t0        /dev/null
    udevd               root    u      CHR                ,      t0        /dev/null
               

    lsof輸出各列資訊的意義如下:

    COMMAND:程序的名稱 PID:程序辨別符

    USER:程序所有者

    FD:檔案描述符,應用程式通過檔案描述符識别該檔案。如cwd、txt等 TYPE:檔案類型,如DIR、REG等

    DEVICE:指定磁盤的名稱

    SIZE:檔案的大小

    NODE:索引節點(檔案在磁盤上的辨別)

    NAME:打開檔案的确切名稱

    Type: 檔案類型。檔案和目錄分别稱為 REG 和 DIR。而CHR 和 BLK,分别表示字元和塊裝置;或者 UNIX、FIFO 和 IPv4,分别表示 UNIX 域套接字、先進先出 (FIFO) 隊列和網際協定 (IP) 套接字。

    lsof -p            列出程序号為的程序所打開的檔案
    lsof +d /usr/local/    顯示目錄下被程序開啟的檔案
    lsof +D /usr/local/    同上,但是會搜尋目錄下的目錄,時間較長
               

繼續閱讀