Nfs
如何辨識哪個 NFS 客戶端產生磁碟 IO?
我們的池伺服器磁碟 100% 忙。
我檢查
iotop
並確定這nfsd
是消耗磁碟 IO 的頂級程序。我需要進一步縮小範圍,並想確定哪個 NFS 客戶端使用伺服器是/負責這個磁碟 IO 瓶頸。我該如何進行?
iotop
然後o
- 您將看到哪個程序讀取和/或寫入以及多少到 HDD。檢查該程序的 pid 並執行
netstat -entp | grep <pid>
- 這樣您將看到已建立的 tcp 連接以及它來自哪個地址。用於enp
檢查 tcp 和 udp 會話。您也可以這樣做
netstat -anp | grep 2049
- 這樣獲取一個 ip 地址和 pid,然後將 pid 與來自iotop
.
通常使用最多 IO 的客戶端也會處理最多的網路流量,所以我要做的是:轉儲所有流量幾秒鐘,然後創建一個使用最多流量的主機的排序列表(僅限於 nfs 主機):
tcpdump > dump.cap # (30 secs should be enought), press ctr+ c grep -o "<something iding an nfs client>" dump.cap | sort | uniq -c | sort -n