在linux系統中跟蹤高IO等待
原文作者:Jon Buys
跟蹤大型分散式系統的效能問題,從本質上來講是複雜的。應用為什麼慢?瓶頸在哪裡?以我的經驗,最主要的罪魁禍首之一是高IO等待(即high IO wait)。換一個地方用的話來說:每個人都只是在等待[翻譯參考文獻1]。
高IO等待問題的第一個徵兆通常是系統平均負載。負載均衡的計算都是基於CPU利用率的,即使用或等待CPU的程序數目,當然,在Linux平臺上,程序幾乎都處於不可中斷的睡眠狀態。負載均衡的基線可以解釋為,在一個CPU核的機器上上,該CPU得到充分利用。因此,對於4核機器中,如果系統平均複雜為4,表示該機器有足夠的資源來處理它需要做的工作,當然只是勉強。在相同的4
如果系統顯示平均負載較高,但是CPU的系統(system)和使用者(user)利用率較低,那麼就需要觀察IO等待(即IO wait)。在linuc系統上,IO wait對系統負載有較大的影響,主要因為一個或多個核都可能被磁碟IO或網路IO所阻塞,只有當磁碟IO或網路IO完成後,這些核上的任務(即程序)才能進行下去。而這些程序使用ps aux來檢視均處於”D”狀態,即不可中斷的睡眠狀態。
發現程序在等待IO完成是一回事,驗證高IO wait的原因是另一回事。使用”iostat –x 1”
[[email protected]~]$ iostat -x 1
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
cciss/c0d0 0.08 5.94 1.28 2.75 17.34 69.52 21.60 0.11 26.82 4.12 1.66
cciss/c0d0p1 0.00 0.00 0.00 0.00 0.00 0.00 5.30 0.00 8.76 5.98 0.00
cciss/c0d0p2 0.00 0.00 0.00 0.00 0.00 0.00 58.45 0.00 7.79 3.21 0.00
cciss/c0d0p3 0.08 5.94 1.28 2.75 17.34 69.52 21.60 0.11 26.82 4.12 1.66
由上可知,很明顯,裝置/dev/cciss/c0d0p3的等待時間很長。然而,我們並沒有掛載找個裝置,實際上,它是個LVM裝置。如果您使用的是LVM作為儲存,那麼,您應該發現iostat應該有那麼一點混亂。LVM使用device mapper子系統將檔案系統對映到物理裝置,因此,iostat可能顯示多個裝置,比如/ dev/dm-0和/ dev/dm-1。而”df –h”的輸出卻不會顯示device mapper路徑,而是列印了LVM路徑。最簡單的方法是在iostat引數中新增選項”-N”。
[[email protected]~]$ iostat -xN 1
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
vg1-root 0.00 0.00 0.09 3.01 0.85 24.08 8.05 0.08 24.69 1.79 0.55
vg1-home 0.00 0.00 0.05 1.46 0.97 11.69 8.36 0.03 19.89 3.76 0.57
vg1-opt 0.00 0.00 0.03 1.56 0.46 12.48 8.12 0.05 29.89 3.53 0.56
vg1-tmp 0.00 0.00 0.00 0.06 0.00 0.45 8.00 0.00 24.85 4.90 0.03
vg1-usr 0.00 0.00 0.63 1.41 5.85 11.28 8.38 0.07 32.48 3.11 0.63
vg1-var 0.00 0.00 0.55 1.19 9.21 9.54 10.74 0.04 24.10 4.24 0.74
vg1-swaplv 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 3.98 1.88 0.00
為簡便起見,裁剪上面iostat命令的輸出資訊。列出的每個檔案系統所顯示出的IO等待都是不可接受的,觀察第十欄標有“await”的資料。相比而言,檔案系統/usr的await時間要高一些。我們先來分析一下這個檔案系統,使用命令” fuser -vm /opt ”檢視哪些程序在訪問這個檔案系統,程序列表如下。
[email protected]:/root > fuser -vm /opt
USER PID ACCESS COMMAND
db2fenc1 1067 ....m db2fmp
db2fenc1 1071 ....m db2fmp
db2fenc1 2560 ....m db2fmp
db2fenc1 5221 ....m db2fmp
當前伺服器上有112個DB2程序正在訪問/opt檔案系統,為簡便起見,列出四項。看來已經找到導致問題的原因,在伺服器上,資料庫配置為可使用速度更快的SAN訪問,作業系統可以使用的是本地磁碟。可以打電話問問DBA(資料庫管理員)怎麼做才能這樣配置。
最後一個組要的注意的是LVM和device mapper。 “Iostat –xN”命令的輸出顯示的是邏輯卷名,但它是可以通過命令”ls –lrt / dev /mapper”查到對映關係表。輸出資訊的第六列中的dm-是與iostat中的裝置名相對應的。
有時候,在作業系統或應用層是沒有什麼可以做的,除了選擇速度更快的磁碟,並沒有其他的選擇。幸運的是,快速磁碟訪問,如SAN或SSD的價格正在逐步下降。
最後一個需要注意的,具體問題具體分析。您需要深刻了解您能的環境,包括物理環境,虛擬環境和應用層架構,這樣才能便於診斷問題。如果有其他方法或方式來解決這類問題,我很想聽聽這些意見。
翻譯參考文獻
[1] http://www.goodreads.com/quotes/376564-waiting-for-the-fish-to-bite-or-waiting-for-wind
“Waiting for the fish to bite or waiting for wind to fly a kite. Or waiting around for Friday night or waiting perhaps for their Uncle Jake or a pot to boil or a better break or a string of pearls or a pair of pants or a wig with curls or another chance. Everyone is just waiting.”
----------------------------------------
初次翻譯,不足之處,請不吝賜教
----------------------------------------
本作品採用知識共享署名-非商業性使用-相同方式共享 3.0 未本地化版本許可協議進行許可。
相關推薦
在linux系統中跟蹤高IO等待
原文作者:Jon Buys 跟蹤大型分散式系統的效能問題,從本質上來講是複雜的。應用為什麼慢?瓶頸在哪裡?以我的經驗,最主要的罪魁禍首之一是高IO等待(即high IO wait)。換一個地方用的話來說:每個人都只是在等待[翻譯參考文獻1]。 高IO
linux系統中的IO操作
同步IO分為阻塞IO、非阻塞IO、訊號驅動的IO和多路轉接IO。阻塞IO: 一直阻塞程序直到完成IO操作。 非阻塞IO: 有資料時進行IO操作,沒有資料時立即返回不阻塞程序。 訊號驅動IO: 當有資料到來是傳送訊號給程序執行IO操作,提高CPU的利用率。當設定開啟檔案描述字
Cgroup限制CPU、IO、記憶體以及linux系統中的排程策略
一、CPU 1、0核利用 思路: 0核是必須要保護的,否則各種系統命令、喂狗都可能出問題; &
老男孩教育每日一題-2017年5月12日-磁盤知識點:linux系統中LVM配置實現方法?
邏輯卷管理 磁盤 每日一題 1.題目老男孩教育每日一題-2017年5月12日-磁盤知識點:linux系統中LVM配置實現方法?2.參考答案01:將一個或多個物理分區創建為一個PV# pvcreate /dev/sdb{1,2} Physical volume "/dev/sdb1" success
linux系統中定時任務
linu tab 一次 腳本 lin edi 路徑 執行 表示 1、查看所有定時任務:命令:“crontab -l” 數字意思解釋如下:從左到右,依次是:分、時、日、月、星期。 2、編輯定時執行計劃:命令:"crontab -e" ,e表示edit修改的意思。 3、修
Linux 系統中這樣修復 SambaCry 漏洞
windows 服務器 解決方案 linux 非官方 導讀Samba 很久以來一直是為 linux 系統上的 Windows 客戶端提供共享文件和打印服務的標準。家庭用戶,中型企業和大型公司都在使用它,它作為最佳解決方案在多種操作系統共存的環境中脫穎而出,由於廣泛使用的工具很可能發生這種情
linux 系統中的 /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin 目錄的區別
。。 process pre this 用戶 unix table mount sent 先來段英文的: /bin This directory contains executable programs which are needed in single user
Linux 系統中安裝Mysql_5.6
上傳 粘貼 啟動mysql grant ont linu chm cli char Linux 系統中安裝Mysql_5.6 安裝包下載地址(http://pan.baidu.com/s/1o8G5q
在Linux系統中安裝vmTools
cdr cdrom linu 是否 壓縮 進入 span pan tin 以下是,會用到的命令、遇到的問題及解釋: 在虛擬機中安裝centOS系統,因為後續安裝服務或者其他的東西,因此需要安裝vmTools,方便將文件從宿主電腦拖進虛擬機內。(我的是tar壓縮包的vmToo
Linux系統中有關/dev/null和/dev/zero文件說明及實踐
linux /dev/null 特殊文件 /dev/zero Linux系統中有關/dev/null和/dev/zero文件說明提示:這個題目完全可以作為一個面試題考考運維的應聘者:面試題:請解釋Linux中/dev/null和/dev/zero兩個文件的作用和區別。在類Unix操作系統中,
運維學習之Linux系統中的文件傳輸、歸檔、壓縮
linux不同系統之間的文件傳輸1.文件歸檔1.文件歸檔,就是把多個文件變成一個歸檔文件2.tar c ##創建 f ##指定歸檔文件名稱 t ##顯示歸檔文件中的內容 r ##向歸檔文件中添加文件 --get ##取出單個文件 --delete ##刪除單個文件 x ##取出歸檔文件中的所有內容
Linux系統中如何查看日誌信息
日誌文件 系統日誌 楊書凡 日誌文件是用於記錄Linux系統中各種運行消息的文件,不同的日誌文件記載了不同類型的信息,對於診斷和解決系統中的問題很有幫助分析日誌文件 日誌數據主要包括三種類型:內核及系統日誌、用戶日誌、程序日誌 #對於大多數的文本格式的日誌文件,使用tail、more、l
Linux系統中修改/etc/profile文件的方法
linux在Linux系統中etc/profile文件一般是不能更改的,想要更改etc/profile文件就要用一些特殊的技巧進行Linux文件修改。本文就來介紹一下Linux系統中修改/etc/profile文件的方法:etc/profile文件是只讀的,直接用vi或gedit打開修改後是無法保存的。要修改
Linux系統中svn服務器設置開機啟動
數據庫 檢查 reat version 打開端口 rest grep 建立 標簽 安裝完svn服務器後雖然好用但是因為經常重啟Linux服務器,每次重啟完就要去手動啟動svn服務器,很是麻煩,於是在網上找了一些方法後,自己把svn服務器設置成開機啟動 步驟一:安裝svn服務
Linux系統中終端的入口
配置 bash 需求:登陸通過SSH登陸Linux主機,主機只能執行特定腳本或程序,如何約束?首先配置/etc/bash.bashrc 該文件每次打開新的shell都會執行該文件;添加執行腳本或程序路徑到bash.bashrc文件;對於腳本或程序,不能有退出程序的語句,異常情況下也要保持在腳本或程序裏
在Linux系統中實現CA
linux、創建ca前言 CA是證書的簽發機構,它是PKI的核心。CA是負責簽發證書、認證證書、管理已頒發證書的機關。它要制定政策和具體步驟來驗證、識別用戶身份,並對用戶證書進行簽名,以確保證書持有者的身份和公鑰的擁有權。。 CA 也擁有一個證書(內含公鑰)和私鑰。網上的公眾用戶通
Linux系統中安裝MySQL數據庫操作手冊
linux mysql數據庫 Linux系統中MySQL數據庫安裝手冊一、安裝概述: 在Linux操作系統中安裝MySQL數據庫是一個我們必須要掌握的一門技術,也決定了你以後找工作的薪資待遇,所以你知道它的厲害了吧!學會安裝只是第一步,你還得學好數據庫的基本操作,以及搭建一個數據庫的主從配置等等
Linux系統中MySQL數據庫“主從”配置
linux mysql數據庫主從配置 MySQL數據庫“主從”配置一、配置概述: 在Linux操作系統中配置MySQL數據庫的主從復制是很重要的,為什麽這樣說呢!是因為在你搭建一個服務器以後你配置了2臺數據庫,一主一從。2臺數據庫配置好以後,當其中一臺數據庫被攻擊以後,你被攻擊的這臺數據庫的數據
Linux系統內對高CPU的監控及日誌分析
文件 mos anti sage them 其中 generate ted cpu 使用linux系統時,占用cpu資源過高和,用腳本排查: 1,實時監控,一旦有cpu占用高的進程,程序啟動; 2,再對進程分析,得出對應線程; 3,對對應線程所在的程序日誌文檔進行分析,比如
linux系統中如何進入退出vim編輯器的方法及區別
sig bili 編輯器 html enter mil erl convert dstat 在linux家族中,vim編輯器是系統自帶的文本編輯器,其功能強大自不必說了。 偶有小白,剛接觸linux,要修改某個文本文件,不可能像WINDOWS那樣操作