導航:首頁 > 配伺服器 > 如何查看伺服器的io

如何查看伺服器的io

發布時間:2024-02-27 15:14:30

1. 阿里雲的伺服器最近IO高老卡死,必須重啟才行。怎樣找到IO過高的程序

cpu/帶寬使用正常,磁碟IO佔用過高,建議你檢查伺服器當時時間點是否有讀寫進程任務導致(Windows伺服器任務管理器—性能—資源監控器—磁碟查看磁碟活動進程和磁碟讀寫,linux伺服器可以通過top,iostat等命令查看),你也可以檢查資料庫日誌檢查你的資料庫是否存在慢查詢、死鎖、全表掃描導致,或者你可以通過使用雲監控監控進程的磁碟IO讀寫。如果遇到問題你可以通過阿里雲的售後支持-提交工單咨詢。

2. 如何查看Linux下進程的IO活動狀況 00 Hey,Linux

您好,很高興為您解答。伺服器cpu使用率不高,load比較高,所以要查看一下IO。硬碟IO可以通過命令vmstat或iostat獲得(也可以用yum安裝dstat獲得),網路IO可以用iftop命令獲取。但是不知道那個進程使用硬碟IO比較高,通過查找沒有找到相關命令,只好自己寫個腳本進行統計處理。本腳本在CentOS6下(kernel2.6以上)python2.6測試通過。直接運行腳本,默認情況下收集3秒鍾數據,顯示讀寫最高的前三個進程。如用參數可以使用命令「pythonfhip.py453」,第一個數位每次收集讀寫數據的間隔秒數,第二個數是列印出讀寫最多的n個進程,第三個為運行腳本的次數。因為參數部分寫的比較簡單那,所以用參數必須3個全寫。。#!/bin/python#-*-coding:utf-8-*-#Filename:ind_high_io_process#Revision:1.0#Date:2013-3-8#Author:simonzhang#web:#######sys_proc_path='/proc/'re_find_process_number='^\d+$'#####通過/proc/$pid/io獲取讀寫信息####defcollect_info():_tmp={}re_find_process_dir=re.compile(re_find_process_number)foriinos.listdir(sys_proc_path):ifre_find_process_dir.search(i):#獲得進程名process_name=open("%s%s/stat"%(sys_proc_path,i),"rb").read().split("")[1]#讀取io信息rw_io=open("%s%s/io"%(sys_proc_path,i),"rb").readlines()for_infoinrw_io:cut_info=strip(_info).split(':')ifstrip(cut_info[0])=="read_bytes":read_io=int(strip(cut_info[1]))ifstrip(cut_info[0])=="write_bytes":write_io=int(strip(cut_info[1]))_tmp[i]={"name":process_name,"read_bytes":read_io,"write_bytes":write_io}return_tmpdefmain(_sleep_time,_list_num):_sort_read_dict={}_sort_write_dict={}#獲取系統讀寫數據process_info_list_frist=collect_info()time.sleep(_sleep_time)process_info_list_second=collect_info()#將讀數據和寫數據進行分組,寫入兩個字典中forloopinprocess_info_list_second.keys():second_read_v=process_info_list_second[loop]["read_bytes"]second_write_v=process_info_list_second[loop]["write_bytes"]try:frist_read_v=process_info_list_frist[loop]["read_bytes"]except:frist_read_v=0try:frist_write_v=process_info_list_frist[loop]["write_bytes"]except:frist_write_v=0#計算第二次獲得數據域第一次獲得數據的差_sort_read_dict[loop]=second_read_v-frist_read_v_sort_write_dict[loop]=second_write_v-frist_write_v#將讀寫數據進行排序sort_read_dict=sorted(_sort_read_dict.items(),key=lambda_sort_read_dict:_sort_read_dict[1],reverse=True)sort_write_dict=sorted(_sort_write_dict.items(),key=lambda_sort_write_dict:_sort_write_dict[1],reverse=True)#列印統計結果print"pidprocessread(bytes)pidprocesswrite(btyes)"for_numinrange(_list_num):read_pid=sort_read_dict[_num][0]write_pid=sort_write_dict[_num][0]res="%s"%read_pidres+=""*(8-len(read_pid))+process_info_list_second[read_pid]["name"]res+=""*(12-len(process_info_list_second[read_pid]["name"]))+"%s"%sort_read_dict[_num][1]res+=""*(12-len("%s"%sort_read_dict[_num][1]))+write_pidres+=""*(8-len(write_pid))+process_info_list_second[write_pid]["name"]res+=""*(12-len("%s"%process_info_list_second[write_pid]["name"]))+"%s"%sort_write_dict[_num][1]printresprint"\n"*1if__name__=='__main__':try:_sleep_time=sys.argv[1]except:_sleep_time=3try:_num=sys.argv[2]except:_num=3try:loop=sys.argv[3]except:loop=1foriinrange(int(loop)):main(int(_sleep_time),int(_num))如若滿意,請點擊【採納答案】,如若還有問題,請點擊【追問】希望我的回答對您有所幫助,望採納!~O(∩_∩)O~

3. 在linux 下怎麼查看伺服器的cpu和內存的硬體信息

以Linux centos 7伺服器為例,查看伺服器的cpu和內存的硬體信息方法如下:

1、滑鼠右鍵點擊桌面,選擇「打開終端」,如下圖所示。


4. 如何用zabbix來監控磁碟IO

使用zabbix監控磁碟IO

前面的文章介紹了zabbix簡單的安裝,下面介紹下利用zabbix監控磁碟IO的方法
默認的 Zabbix 監控模板中,對於磁碟主要是剩餘空間之類的監控,對於 IO 方面卻沒有,好在 Zabbix 提供了豐富的定製功能,可自行添加想要監控的任意內容。具體步驟如下:
1、 在被監控伺服器的配置文件(/etc/zabbix/zabbix_agentd.conf)中添加以下內容:
###disk io
UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}'
UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}'
UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}'
UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}'
UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$12}'
UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}'
UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}'
UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}'

可以先測試看其是否生效,使用如下命令,看是否正常返回數字。注意在命令行運行時,grep 那裡的 $1 需根據自己磁碟設定修改為 sda 或 sdb,awk 那裡需去除一個 $ 符號。
cat /proc/diskstats | grep sda | head -1 | awk '{print $4}'

2、被監控主機重啟 agent

/etc/init.d/zabbix_agentd_ctl restart

3、在 zabbix server 上測試能否接收數據,將其中的 AgentServerIP 修改為被監控伺服器的IP,注意這里是在運行 zabbix 服務端的機器上執行此操作。如果返回的是一串數字則正確,如果返回ZBX_NOTSUPPORTED ,請檢查確認被監控主機的 agent 是否有重啟,網路埠是否開放。
zabbix_get -s AgentServerIP -p 10050 -k custom.vfs.dev.write.ops[sda]

4、在 zabbix web 配置界面的模板中,導入這里提供的模板。並將此模板關聯到要監控的伺服器主機上,很快就可以在 Latest data 中看到獲取的數據並可畫出趨勢圖了。

5. Linux伺服器硬體情況的查看

1、首先是對於CPU的說明
伺服器CPU性能參數主要信息可以通過查看 /proc/cpuinfo 獲得。具體查看指令及效果如下:

顯示這台伺服器上有2個物理CPU

顯示這台伺服器的物理核數為16個

顯示運行模式為64位

顯示為Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz

命令:

顯示此伺服器的線程數為64

top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器。下面詳細介紹它的使用方法。top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前台執行該命令,它將獨占前台,直到用戶終止該程序為止.比較准確的說,top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最「敏感」的任務列表.該命令可以按CPU使用.內存使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過互動式命令或者在個人定製文件中進行設定.

1.命令格式:

top [參數]

2.命令功能:

顯示當前系統正在執行的進程的相關信息,包括進程ID、內存佔用率、CPU佔用率等

3.命令參數:

-b 批處理

-c 顯示完整的治命令

-I 忽略失效過程

-s 保密模式

-S 累積模式

-i<時間> 設置間隔時間

-u<用戶名> 指定用戶名

-p<進程號> 指定進程

-n<次數> 循環顯示的次數

4.使用實例:

實例1:通過 Top 命令顯示進程信息

命令:

統計信息區:

前五行是當前系統情況整體的統計信息區。下面我們看每一行信息的具體意義。

第一行,任務隊列信息,同 uptime 命令的執行結果,具體參數說明情況如下:

10:38:58 — 當前系統時間

up 39 days, 19:47 — 系統已經運行了39天19小時47分鍾(在這期間系統沒有重啟過的吆!)

1 users — 當前有1個用戶登錄系統

load average: 0.00, 0.00, 0.00 — load average後面的三個數分別是1分鍾、5分鍾、15分鍾的負載情況。

load average數據是每隔5秒鍾檢查一次活躍的進程數,然後按特定演算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。

第二行,Tasks — 任務(進程),具體信息說明如下:

系統現在共有769個進程,其中處於運行中的有1個,463個在休眠(sleep),stoped狀態的有0個,zombie狀態(僵屍)的有0個。

第三行,cpu狀態信息,具體屬性說明如下:

0.0%us — 用戶空間佔用CPU的百分比。

0.0% sy — 內核空間佔用CPU的百分比。

0.0% ni — 改變過優先順序的進程佔用CPU的百分比

100.0% id — 空閑CPU百分比

0.0% wa — IO等待佔用CPU的百分比

0.0% hi — 硬中斷(Hardware IRQ)佔用CPU的百分比

0.0% si — 軟中斷(Software Interrupts)佔用CPU的百分比

備註:在這里CPU的使用比率和windows概念不同,需要理解linux系統用戶空間和內核空間的相關知識!

第四行,內存狀態,具體信息如下:

65600012k total — 物理內存總量

1785256k used — 使用中的內存總量

62385920k free — 空閑內存總量

1428836k buffers — 緩存的內存量

第五行,swap交換分區信息,具體信息說明如下:

2097148k total — 交換區總量

918340k used — 使用的交換區總量

1178808k free — 空閑交換區總量

備註:

第四行中使用中的內存總量(used)指的是現在系統內核控制的內存數,空閑內存總量(free)是內核還未納入其管控范圍的數量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重復利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用為此擔心。

對於內存監控,在top里我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了。

第六行,空行。

第七行以下:各進程(任務)的狀態監控,項目列信息說明如下:

PID — 進程id

USER — 進程所有者

PR — 進程優先順序

NI — nice值。負值表示高優先順序,正值表示低優先順序

VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES

RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA

SHR — 共享內存大小,單位kb

S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程

%CPU — 上次更新到現在的CPU時間佔用百分比

%MEM — 進程使用的物理內存百分比

TIME+ — 進程使用的CPU時間總計,單位1/100秒

COMMAND — 進程名稱(命令名/命令行)

或者通過 free 命令顯示系統內存的使用情況,包括物理內存、交換內存(swap)和內核緩沖區內存。

命令:

顯示我當前的伺服器的物理內存是62G,其中交換內存是2個G,一共剩餘是60G的

三、查看Linux內核當前的系統版本號

命令:

顯示的當前的伺服器Linux內核是Ubuntu系統,版本號是18.04.6

6. 如何查看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看到如下圖所示的信息:

閱讀全文

與如何查看伺服器的io相關的資料

熱點內容
三種命令方塊 瀏覽:563
hp伺服器怎麼重新做系統 瀏覽:480
電腦與單片機無線 瀏覽:611
雲伺服器錢怎麼提現 瀏覽:878
華為運動app怎麼退出登錄 瀏覽:796
程序員那麼可愛陸漓金句 瀏覽:879
java如何將自己電腦設置成伺服器 瀏覽:858
域名怎麼制定伺服器8080埠 瀏覽:665
伺服器的主機如何使用 瀏覽:814
廣訊通伺服器地址怎麼填 瀏覽:665
山東交管伺服器繁忙雲空間 瀏覽:52
51單片機熱敏電阻壞了 瀏覽:547
遠程電腦是雲伺服器嗎 瀏覽:194
壓縮包解壓出來是音頻 瀏覽:946
明源雲erp伺服器故障 瀏覽:159
安卓主頁英文怎麼寫 瀏覽:846
2002伺服器系統怎麼設置分屏 瀏覽:73
什麼情況空調壓縮機電容壞 瀏覽:991
pagerank演算法圖解 瀏覽:319
部落決斗命令 瀏覽:405