面试官:如何实时监控程式所占的网络带宽?
概述
目前Linux系统有很多开源网络监视工具.比如说,你可以用命令iftop来检查带宽使用情况. netstat用来检视界面统计报告,还有top监控系统当前执行程序.但是如果你想要找一个能够按程序实时统计网络带宽利用率的工具,那么NetHogs值得一看。NetHogs是一个小型的net top工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是按照程序进行带宽分组.NetHogs不需要依赖载入某个特殊的核心模组. 如果发生了网络阻塞你可以启动NetHogs立即看到哪个PID造成的这种状况.这样就很容易找出哪个程式跑飞了然后突然占用你的带宽.
简单地说,可以通过nethogs检视linux下程序的流量。

安装部署
1、 编译安装nethogs依赖包,centos预设rpm仓没有nethogs的包,所以需要我们手动编译。nethogs编译依赖2个库,在编译前需要安装下# yum install libpcap libpcap-devel gcc* ncurses*

2、下载nethogs
因为0.8存在bug(creating socket failed while establishing local IP - are you root?),所以这里就用0.81版本了
# wget -c https://github.com/raboof/nethogs/archive/v0.8.1.tar.gz

3、编译安装
# tar -xvf v0.8.1.tar.gz
# cd nethogs-0.8.1/
# make && make install

#预设安装好后的路径是/usr/local/sbin/nethogs
4、测试执行:
# nethogs

用法
1、命令列引数
2、例项:
例项1:设定5秒钟重新整理一次,通过-d来指定重新整理频率
# nethogs -d 5
例项2:监视eth0网络带宽
# nethogs eth0
例项3:同时监视eth0和eth1界面
# nethogs eth0 eth1

3、互动命令:
以下是NetHogs的一些互动命令(键盘快捷键)
m : 修改单位
r : 按流量排序
s : 按传送流量排序
q : 退出命令提示符
关于NetHogs命令列工具的完整引数列表,可以参考NetHogs的手册,使用方法是在终端里输入man nethogs。
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下!
