① linux的 iostat 找出哪個進程占據了大量IO
iostat實時查看不如iotop,iotop用了直觀反映你的需求
# iotop
② linux iostat 這都表示
平均CPU佔用 用戶的 ? 系統的 IO等待 ? 空閑
③ 請教Linux裡面,關於iotop和iostat的信息抓取的問題
兩個問題一個思路:
腳本運行開始,記錄時間,time=現在的時間-腳本開始運行的時間;
iotop
if time = 5
iotop >> file
④ 如何查看linux狀態
iostat
iostat 命令詳細地顯示了存儲子系統方面的情況。你通常用iostat來監控存儲子系統總體上運行狀況如何,並且在用戶注意到伺服器運行緩慢之前提早發現輸入/輸出緩慢的問題。相信我,你應該在用戶發現這些問題之前先發現這些問題!
meminfo和free
meminfo為你詳細顯示了內存方面的情況。你通常可以使用另一個程序,比如cat和grep,來訪問meminfo的信息。比如說,cat /proc/meminfo為你詳細顯示了伺服器的內存在任何一個時間的使用情況。
如果想快速了解內存的概要信息,可以使用free命令。簡而言之,free為你提供了概要信息;meminfo為你提供了詳細信息。
mpsta
mpstat命令可以報告多處理器伺服器上每個可用處理器的活動情況。如今,由於多核處理器,這個命令適用於幾乎所有伺服器。mpstat還可以報告所有伺服器上的處理器的平均活動情況。它讓你能夠按照系統或按照處理器來顯示總的處理器統計信息。這個概要信息可以在潛在的應用程序問題惹毛用戶之前提醒你注意。
⑤ 如何查看Linux下進程的IO活動狀況 00 Hey,Linux
前段時間,幾台測試伺服器的Web應用響應速度非常慢,系統負載也比較高,> 10, 但CPU和內存卻很閑,於是懷疑是磁碟的性能瓶頸,通過vmstat和iostat看到IO的讀寫量非常大,尤其是用iostat -x 1命令可以很直觀的看到IO的使用率一直在100%。
但究竟是什麼進程導致的高IO呢,由於每台伺服器上都有JBoss和MySQL的存在,JBoss會不停的產生很多小的數據文件和生成文本資料庫的數據,而MySQL則會不停的從Master同步新的數據。因此我們懷疑是這兩個進程導致的高IO,通過停止了JBoss和MySQL之後,IO立刻降為0%. 但我們還是不能確定誰是主因,於是尋找可以查看特定進程IO的方法。
最後,找到了兩個方法可以查看進程IO的活動狀況。
1. 第一個方法是通過一個python腳本來實現。
方法是將以下內容另存為一個叫io.py的腳本中,然後直接以root身份執行腳本,就可以看到如下圖所示的信息(由於我們已經通過升級到SSD硬碟解決了MySQL的IO問題,所以不能提供關於MySQL的截圖了),其中出現次數最多,數據最大的進程,就是導致高IO的主因。不過比較遺憾的是這個腳本並不能顯示進程在每一秒的准確的IO讀寫。
# vim io.py
# chmod +x io.py
# ./io.py
#!/usr/bin/python
# Monitoring per-process disk I/O activity
# written by http://www.vpsee.com
import sys, os, time, signal, re
class DiskIO:
def __init__(self, pname=None, pid=None, reads=0, writes=0):
self.pname = pname
self.pid = pid
self.reads = 0
self.writes = 0
def main():
argc = len(sys.argv)
if argc != 1:
print "usage: ./iotop"
sys.exit(0)
if os.getuid() != 0:
print "must be run as root"
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
os.system('echo 1 > /proc/sys/vm/block_mp')
print "TASK PID READ WRITE"
while True:
os.system('dmesg -c > /tmp/diskio.log')
l = []
f = open('/tmp/diskio.log', 'r')
line = f.readline()
while line:
m = re.match(\
'^(\S+)\((\d+)\): (READ|WRITE) block (\d+) on (\S+)', line)
if m != None:
if not l:
l.append(DiskIO(m.group(1), m.group(2)))
line = f.readline()
continue
found = False
for item in l:
if item.pid == m.group(2):
found = True
if m.group(3) == "READ":
item.reads = item.reads + 1
elif m.group(3) == "WRITE":
item.writes = item.writes + 1
if not found:
l.append(DiskIO(m.group(1), m.group(2)))
line = f.readline()
time.sleep(1)
for item in l:
print "%-10s %10s %10d %10d" % \
(item.pname, item.pid, item.reads, item.writes)
def signal_handler(signal, frame):
os.system('echo 0 > /proc/sys/vm/block_mp')
sys.exit(0)
if __name__=="__main__":
main()
2. 另一個方法是將Linux的內核升級到 >=2.6.20,然後安裝一個iotop軟體來實現。
不過這種改動並不適用於生產環境,因為在RHEL5.6和5.7上,內核都在 2.6.20以下。但是它所顯示的結果是非常准確的,所以對於新上線的機器以及測試環境,非常值得一試,具體方法如下:
下載和升級新內核(>=2.6.20),編譯時打開 TASK_DELAY_ACCT 和 TASK_IO_ACCOUNTING 選項。
解壓內核後進入配置界面:
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.gz
# tar jxvf linux-2.6.39.tar.gz
# mv linux-2.6.39 /usr/src/
# cd /usr/src/linux-2.6.39
# make oldconfig //使用make oldconfig可以繼承老的kernel的配置,為自己的配置省去很多麻煩。
# make menuconfig
把General setup - Enable per-task storage I/O accounting這個選項選上。
# vim .config
將#CONFIG_SYSFS_DEPRECATED_V2 is not set的注釋去掉的,將其改為y,即修改為CONFIG_SYSFS_DEPRECATED_V2=y。
保存內核後編譯內核:
# make
# make moles
# make moles_install
# make install
修改默認以新的內核啟動:
# vi /boot/grub/grub.conf
default=0
將新的內核配置文件復制到/boot目錄:
# cp /usr/src/linux-2.6.39/.config /boot/config-2.6.39
重啟伺服器:
# reboot
# uname –r
2.6.39
重啟完成後確認內核版本是否正確。
源碼安裝iotop所需的Python 2.7.2(>= 2.5):
# wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz
# tar xzvf Python-2.7.2.tgz
# cd Python-2.7.2
# ./configure
# make; make install
下載並安裝iotop:
# wget http://guichaz.free.fr/iotop/files/iotop-0.4.4.tar.bz2
# tar -xjvf iotop-0.4.4.tar.bz2
# cd iotop-0.4.4
# python setup.py build
# python setup.py install
然後就可以使用iotop看到如下圖所示的信息:
⑥ 新手如何學習Linux
新手學習建議找准學習方向報班學習。
Linux主體分為「運維」與「開發」兩個方向,無論你是Linux相關從業者,還是說愛好都可以歸類到這里,其中「運維」一般是初學者或者轉行人員的首選,而Linux運維主要是對伺服器穩定、性能與安全方面的維護和調試。
實際上Linux入門並不困難,只要具備Linux基礎,讀懂Linux的命令格式,大多數的服務架構都是可以按照文檔部署出來。當然做Linux開發,個人建議去參加培訓學習更有效率,如果報班學習則大概需要4-6個月時間。
學習主要內容有:
1)網路基礎與linux系統的管理
2)優化及高可用技能
3)虛擬化與雲平台技術
4)開發運維
畢業後可從事的工作有:
1)Linux運維工程師
2)資料庫工程師
3)雲計算運維工程師
4)自動化運維工程師
5)雲計算架構工程師等
互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。
想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。
祝你學有所成,望採納。
⑦ 監控linux io 使用iostat命令常用參數有哪些
如果vmstat和iostat命令不能再你的電腦上運行,請安裝sysstat包。因為vmstat和iostat命令是集成在SYSSTAT(系統監視工具)包裡面。 iostat命令主要生成CPU和所有設備統計報告。你可以下載並安裝SYSSTAT,如果使用源代碼tar包安裝,從這里下載SYSSTA...
⑧ linux性能監控iostat怎麼退出這個命令
方法/步驟
iostat -d -k 1 5 命令中參數-d 表示顯示磁碟使用情況,-k 表示顯示block的列以K為單位,1 5 表示 每隔1秒刷新一次,共顯示5次。
查詢結果中主要關注指標有: tps 每秒的傳輸次數,kB_read/s 每秒從設備讀取的數據量,kB_wrtn/s 每秒向設備寫入的數據量。kB_read 和 kB_wrtn 分別表示從設備讀取的數據總量和寫入的數據總量。
iostat -d -x -k 1 5 命令 參數 -x可以統計更多的信息,查詢結果中主要關注指標有:設備使用率 %util ,表示該統計時間內所有的處理IO時間,如果該值接近100%,說明該設備已經接近滿負荷,響應時間 await,表示每個IO處理的平均時間,單位是毫秒,如果該值大於10,說明系統IO處理比較慢了。
3
iostat -c 1 5 命令 參數-c 顯示CPU的狀態信息,查詢結果中主要關注指標有:%iowait ,該參數設置表示CPU等待輸入輸出完成的時間佔比,如果該值過高,表示系統存在IO瓶頸, %idle 表示CPU空閑時間佔比,如果該值小於70%,表示系統壓力比較大,如果持續低於10%,就需要解決CPU資源問題。
⑨ 如何在suse linux安裝iostat
我們開發環境用的是64位的SUSE 10。
今天同事要用iostat工具,發現沒有安裝sysstat包。於是他從光碟里找到sysstat-6.0.2-16.4.x86_64.rpm包,
然後執行rpm -ivh sysstat-6.0.2-16.4.x86_64.rpm,但死活裝不上,報需要gnuplot。
後來我直接用yast工具來安裝sysstat
YaST -i sysstat
執行以上命令後,安裝完成。
在yast安裝過程中發現其實安裝sysstat之前還需要安裝其他包才能進行安裝,於是把包名記了下來,在另一台機器上用rpm手工安裝
rpm -ivh gd-2.0.32-23.2.x86_64.rpm
rpm -ivh plotutils-2.4.1-591.2.x86_64.rpm
rpm -ivh gnuplot-4.0.0-20.2.x86_64.rpm
rpm -ivh sysstat-6.0.2-16.4.x86_64.rpm
以上命令執行完後,也可以成功安裝sysstat包。
不過還是建議使用yast工具,很好很強大哈~
⑩ Linux系統iostat命令
-x: 顯示擴展統計信息(Display extended statistics)
-k: 以多少K/每秒顯示結果,否者是單位是塊/每秒
-t: 每次結果列印時間信息
30:間隔30秒
20: 總共20次顯示結果