在日常運維工作中,會碰到伺服器頻寬飆升致使網站異常情況。作為運維人員,我們要能非常清楚地瞭解到伺服器網路卡的流量情況,觀察到網路卡的流量是由哪些程式在佔用著。
今天介紹一款linux下檢視伺服器網路卡流量佔用情況的工具:Nethogs,來自github上的開源工具。
它不依賴核心中的模組。當我們的伺服器網路異常時,可以通過執行nethogs程式來檢測是那個程式佔用了大量頻寬。節省了查詢時間。
Nethogs安裝:
方法一:在epel源中可以直接yum安裝
[root@dev src]# yum install -y libpcap nethogs -y
方法二:原始碼安裝
#安裝c++環境
[root@dev src]# yum install -y gcc-c++ libpcap-devel.x86_64 libpcap.x86_64 ncurses*
[root@dev src]# git clone https://github.com/raboof/nethogs
[root@dev src]# cd nethogs/
[root@dev src]# make
[root@dev src]# make install
#完成上面步驟就算安裝完成了。如果編譯失敗的話,大部分是缺少編譯環境。
接下來就可以測試了:
命令:“nethogs 網路卡裝置”
檢測 em1網路卡的流量佔用情況(),執行一下命令
[root@dev src]# nethogs em1
圖中第一行就是em1網路卡的流量記錄,表示em1網路卡頻寬被mysql程式佔用。
在PID那一列,可以使用 lsof -p pid 檢視程式。
或者用“lsof -i:埠號”來檢視是哪些程式在佔用。
如檢視mysql埠 lsof -i:3306
當一臺伺服器uptime命令檢視負載很高的時候,可以通過: top命令(按數字1可以檢視到每顆CPU的使用情況;大寫P降序檢視CPU使用率,大寫M降序檢視記憶體使用率); iostat命令(iostat 2 5,重點看下%idel剩餘使用率)檢視IO效能; mpstat命令(mpstat 2 5,重點看下%idel剩餘使用率)檢視CPU效能; htop命令(和top命令差不多,P、M分別表示降序檢視CPU和記憶體使用率); iftop命令(流量監控,可以看出哪些機器跟本機有連線); 還可以檢視crontab有沒有定時任務在消耗資源~~~