1. 程式人生 > >Linux系統使用iftop檢視頻寬佔用情況

Linux系統使用iftop檢視頻寬佔用情況

Linux系統下如果伺服器頻寬跑滿了,檢視跟哪個ip通訊佔用頻寬比較多,可以通過iftop命令進行查詢,使用方法如下:

CentOS系統執行:yum install iftop
Debian系統 執行:apt-get install iftop

在安裝過程中需要我們輸入 y 繼續的步驟,在安裝過程中會提醒我們的。安裝完畢之後,就可以使用iftop命令啟用監控。

2 安裝好後在伺服器執行iftop -i eth1就可以檢視伺服器公網網絡卡頻寬使用情況(如果只執行iftop預設檢測第一塊網絡卡使用情況,這樣查的會是內網網絡卡eth0。

[root@iZ23kick03xZ ~]# iftop -i eth0 -P
  • 1

注:-P 引數會將請求服務的埠顯示出來,也就是說是通過伺服器哪個埠建立的連線,看內網流量執行 iftop -i eth0 -P 命令。


1.jpg

iftop介面含義如下

第一行:頻寬顯示

中間部分:外部連線列表,即記錄了哪些ip正在和本機的網路連線

中間部分右邊:實時引數分別是該訪問ip連線到本機2秒,10秒和40秒的平均流量=>代表傳送資料,<= 代表接收資料

底部三行:表示傳送,接收和全部的流量

底部三行第二列:為你執行iftop到目前流量

底部三行第三列:為高峰值

底部三行第四列:為平均值

通過iftop的介面很容易找到哪個ip在佔用網路流量,這個是ifstat做不到的。不過iftop的流量顯示單位是Mb,這個b是bit,是位,不是位元組,而ifstat的KB,這個B就是位元組了,byte是bit的8倍。

進入iftop畫面後的一些操作命令(注意大小寫)

按h切換是否顯示幫助;

按n切換顯示本機的IP或主機名;

按s切換是否顯示本機的host資訊;

按d切換是否顯示遠端目標主機的host資訊;

按t切換顯示格式為2行/1行/只顯示傳送流量/只顯示接收流量;

按N切換顯示埠號或埠服務名稱;

按S切換是否顯示本機的埠資訊;

按D切換是否顯示遠端目標主機的埠資訊;

按p切換是否顯示埠資訊;

按P切換暫停/繼續顯示;

按b切換是否顯示平均流量圖形條;

按B切換計算2秒或10秒或40秒內的平均流量;

按T切換是否顯示每個連線的總流量;

按l開啟螢幕過濾功能,輸入要過濾的字元,比如ip,按回車後,螢幕就只顯示這個IP相關的流量資訊;

按L切換顯示畫面上邊的刻度;刻度不同,流量圖形條會有變化;

按j或按k可以向上或向下滾動螢幕顯示的連線記錄;

按1或2或3可以根據右側顯示的三列流量資料進行排序;

按<根據左邊的本機名或IP排序;

按>根據遠端目標主機的主機名或IP排序;

按o切換是否固定只顯示當前的連線;

按f可以編輯過濾程式碼;

按!可以使用shell命令;

按q退出監控。

$ sudo apt-get installiftop

阿里雲的ECS伺服器上,外網網絡卡預設是eth1,因此執行如下命令:

$ iftop -i eth1(外網網絡卡)

可以看看是哪些連線長時間佔用了頻寬,然後去 Apache2 的訪問日誌中對應看看 IP 地址在訪問哪些檔案就知道具體情況了。

nginx訪問日誌的預設路徑

/var/log/nginx

下面是原文照抄

利用iftop找出是誰佔用了頻寬

有時候我們的網路緩慢並不是由遠端伺服器或路由器所引起,而只是因為系統中的某些程序佔用了太多可用頻寬。雖然從直觀角度我們很難確定哪些程序正在使用頻寬,但也有一些工具能幫大家把這些搗蛋的傢伙揪出來。

top 就是這樣一款出色的故障排查工具,它的出現還帶來一系列思路相似的衍生品,例如 iotop –能夠確定到底是哪些程序佔用了大部分磁碟I/O效能。最終名為 iftop 的工具橫空出世,能夠在網路連線領域提供同等功能。與top不同,iftop不會親自關注程序情況,而是列出使用者伺服器與遠端IP之間佔用頻寬最多的連線物件。舉例來說,我們可以在iftop中快速檢視備份伺服器IP地址在輸出結果中的位置來判斷備份工作有沒有大量佔用網路頻寬。

iftop 輸出圖示

Ubuntu 14.04檢查是誰佔用了頻寬

紅帽與 Debian 的各個發行版都能使用 iftop 這一名稱的軟體包,但在紅帽發行版方面大家可能需要從第三方資源庫才能獲取。一旦安裝過程完成,我們在命令列中執行 iftop 命令即可啟用(需要 root 許可權)。和 top 命令一樣,我們可以點Q鍵退出。

在不新增額外引數的情況下, iftop 命令通常能夠滿足我們故障排查的全部需求;但有的時候,我們可能也希望利用一些選項實現特殊功能。 iftop 命令在預設情況下會顯示查詢到的第一個埠的統計資訊,但在某些伺服器中大家可能會使用多個埠,所以如果我們希望讓 iftop 打理第二個乙太網埠(即例項中的 eth1 ),那麼請輸入 iftop – i eth1 。

預設情況下, iftop 會試圖將所有IP地址通過解析轉換為主機名稱。這樣做的缺點在於一旦遠端 DNS 伺服器速度緩慢,報告的生成速度也將隨之慘不忍睹。另外,所有DNS解析活動都會增加額外的網路流量,而這些都會顯示在 iftop 的報告介面當中。因此要禁用網路解析功能,別忘了在 iftop 命令後面加 – n 哦。

一般說來, iftop 顯示的是主機之間所使用的全域性頻寬;但為了幫助大家縮小排查範圍,我們可能希望每臺主機具體使用哪個埠進行通訊。畢竟只要找到了主機中佔用最大頻寬的網路埠,我們就可以在判斷是否接入 FTP 埠之外進行其它排查手段。啟動 iftop 之後,按P鍵可以切換埠的顯示與隱藏狀態。不過大家可能會注意到,有時候顯示所有埠狀態可能導致我們正在關注的主機被擠出當前顯示螢幕。如果出現這種情況,我們還可以按 S 或 D 鍵來僅顯示來自特定源或特定目標的埠。由於服務專案眾多,目標主機可能隨機使用多個埠併發生頻寬佔用峰值,這將導致工具無法識別出正在使用的服務,因此僅顯示源埠還是相當有用的。不過伺服器上的埠也可能與當前裝置上的服務相對應。在這種情況下,我們可以使用前面提到的 netstat – lnp 來找出服務所偵聽的埠。

與大多數 Linux 命令相似, iftop 也擁有多種高階選項。我們在文章中提到的這些已經足以涵蓋大多數故障排查需求,但為了滿足大家進一步瞭解 iftop 功能的願望,我教各位一個小技巧:只要輸入 man iftop ,就可以閱讀包含在軟體包當中的使用手冊、獲得更多與之相關的知識。