在日常运维工作中,会碰到服务器带宽飙升致使网站异常情况。作为运维人员,我们要能非常清楚地了解到服务器网卡的流量情况,观察到网卡的流量是由哪些程序在占用着。
今天介绍一款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有没有定时任务在消耗资源~~~