问题:公司一台服务器本身只有20Mb带宽,当开发部署完程序启动之后一会就飙到60,并且持续居高不下,严重影响服务器使用效率,经过排查发现程序启动以后该进程与一个不明的外网IP进行了大流量的IO,配合云平台云监控公网带宽的走势图证明了进站曲线的走势与系统查看结果相吻合,排查过程如下:

linux查看进程占用带宽和流量使用情况

有三个命令vnstat、iftop、nethogs(推荐iftop+nethogs结合使用)

都需要额外安装软件 使用yum或apt-get

yum -y install vnstat

yum -y install iftop

yum -y install nethogs

命令查看全部网卡实时流量动态:

watch cat /proc/net/dev

#在线使用的网卡一般是流量变化最大的网卡

一、vnstat使用,查看接口统计报告

vnstat -i eth0 -l #实时流量情况

#tx是发送(transport),rx是接收(receive)。光纤中是成对出现的,收发是1对。收发必须同时,只收不发,只发不收都是有问题的。

ctrl+c结束后,会显示监控期间的流量统计结果

二、iftop使用,检查带宽使用情况

iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等

命令用法:

-i设定监测的网卡,如:# iftop -i eth1

-B 以bytes为单位显示流量(默认是bits),如:# iftop -B

-n使host信息默认直接都显示IP,如:# iftop -n

-N使端口信息默认直接都显示端口号,如: # iftop -N

交互命令:

按n切换显示本机的IP或主机名;

按s切换是否显示本机的host信息;

按d切换是否显示远端目标主机的host信息;

按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;

按N切换显示端口号或端口服务名称;

按S切换是否显示本机的端口信息;

按D切换是否显示远端目标主机的端口信息;

按p切换是否显示端口信息。

三、nethogs使用,按进程实时统计网络带宽利用率

命令用法:

1、设置5秒钟刷新一次,通过-d来指定刷新频率:nethogs -d 5

2、监视eth0网络带宽 :nethogs eth0

3、同时监视eth0和eth1接口 : nethogs eth0 eth1

交互命令:

以下是NetHogs的一些交互命令(键盘快捷键)

m : 修改单位

r : 按流量排序

s : 按发送流量排序

q : 退出命令提示符

#在PID 那一列,可以使用 lsof -p  pid 查看进程测试。或者用lsof -i :端口号,来查看是哪些进程在占用。如查看80端口  lsof -i :80

总结:先使用iftop找到与该服务器大流量通信的可疑IP,然后再使用nethogs查看具体进程。

解决办法:云平台安全组设置对该可疑IP的进站限制即可。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐