最近发现在线的一台服务器网络流量都占用挺大的,但不知道是哪个程序占用,看可否优化一下。由于是正式环境不敢乱安装大型的流量分析软件,找到了之前用过的小软件 nethogs 和 iftop。
nethogs 很精小,安装包只有46k.安装完也占用112k空间。
安装 nethogs和iftop:
sudo yum install nethogs
sudo yum install iftop
使用:
按端口查看
iftop -n -P
从上图可以看出redis端口占用的流量最大,而且走的是外网IP,即占用的公网的流量,发布的服务这里很显示 需要优化。
按程序查看
nethogs
从上图可以看出前第1个java程序占用的最多宽带1295 .146kb/sec,这个程序也是使用了redis,再与上图结合问题大概也可以推导出来是该应用的redis占用公网大所致,别外这个java程序还是一个传输实时数据到第三方的应用,因此app占用的流量显示比redis还大。
优化:
发现redis使用的是外网IP,修改成内网的IP
应用服务器优化后的图
上图红色圈圈是优化后更新的效果,在连接数不变的情况下,公网的进口流量明显从原来的7m下降到4m。
应用服务器连接 redis服务器网络情况
上图红色圈圈是优化后更新的效果,公网出口流量从4m以上降到2m以下
仅一个小改动,两台服务器的公网流量同时下降,节约不少成。
=================================================================
nethogs常用示例:
- 查看所有网卡的流量情况:
nethogs
- 查看 eth0 网卡的流量情况:
nethogs eth0
- 查看流量最大的 5 个进程:
nethogs | head -n 5
- 设置刷新频率为 5 秒:
nethogs -d 5
- 查看流量最大的端口:
iftop -n -P
===================================================================
iftop 常用的示例:
- 查看所有网卡的流量情况
iftop
这将显示所有网卡的流量情况,并将流量最大的端口排在最上面。
- 查看 eth0 网卡的流量情况
iftop eth0
这将显示 eth0 网卡的流量情况。
- 查看流量最大的 5 个进程
iftop | head -n 5
这将显示流量最大的 5 个进程。
- 设置刷新频率为 5 秒
iftop -d 5
这将设置刷新频率为 5 秒。
- 查看流量最大的端口
iftop -n -P
这将显示流量最大的端口。
- 查看指定 IP 地址的流量情况
iftop -i eth0 -a 192.168.1.1
这将显示 eth0 网卡中与 IP 地址为 192.168.1.1 的计算机的流量情况。
- 查看指定端口的流量情况
iftop -i eth0 -p 80
这将显示 eth0 网卡中与端口为 80 的连接的流量情况。
- 查看指定进程的流量情况
iftop -i eth0 -m 12345
这将显示 eth0 网卡中 PID 为 12345 的进程的流量情况。
- 保存流量数据
iftop -i eth0 -b > traffic.log
这将将 eth0 网卡的流量数据保存到 traffic.log 文件。