+
80
-

linux服务器带宽占用高如何找到带宽ip和进程?

linux服务器带宽占用高如何找到带宽ip和进程?

网友回复

+
0
-

以下操作以 CentOS 7.6 系统的云服务器为例。

执行以下命令,安装 iftop 工具(iftop 工具为 Linux 服务器下的流量监控小工具)。

yum install iftop -y

说明:如果是 Ubuntu 系统,请执行 apt-get install iftop -y 命令。

执行以下命令,安装 lsof。

yum install lsof -y

执行以下命令,运行 iftop。如下图所示:

iftop

<=、=> 表示流量的方向

TX 表示发送流量

RX 表示接收流量

TOTAL 表示总流量

Cum 表示运行 iftop 到目前时间的总流量

peak 表示流量峰值

rates 分别表示过去2s、10s和40s的平均流量

根据 iftop 中消耗流量的 IP,执行以下命令,查看连接该 IP 的进程。

lsof -i | grep IP

例如,消耗流量的 IP 为201.205.141.123,则执行以下命令:

lsof -i | grep 201.205.141.123

根据返回的如下结果,得知此服务器带宽主要由 SSH 进程消耗。

sshd 12145 root 3u IPV4 3294018 0t0 TCP 10.144.90.86:ssh->203.205.141.123:58614(ESTABLISHED)

sshd 12179 ubuntu 3u IPV4 3294018 0t0 TCP 10.144.90.86:ssh->203.205.141.123:58614(ESTABLISHED)

查看消耗带宽的进程,判断此进程是否正常。

如果消耗带宽较多的进程为业务进程,则需要分析是否由于访问量变化引起,是否需要优化空间或者 升级服务器配置。

如果消耗带宽较多的进程为异常进程,可能是病毒或木马导致,您可以自行终止进程或者使用安全软件进行查杀,也可以对数据备份后,重装系统。

+
0
-

找到后可以对该ip进行封锁

要封停一个IP,使用下面这条命令: iptables -I INPUT -s IP -j DROP

要解封一个IP,使用下面这条命令: iptables -D INPUT -s IP -j DROP

参数-I是表示Insert(添加),-D表示Delete(删除)。后面跟的是规则,INPUT表示入站,***.***.***.***表示要封停的IP,DROP表示放弃连接。 此外,还可以使用下面的命令来查看当前的IP规则表: iptables -list

比如现在要将123.44.55.66这个IP封杀,就输入:

iptables -I INPUT -s 123.44.55.66 -j DROP

要解封则将-I换成-D即可,前提是iptables已经有这条记录。如果要想清空封掉的IP地址,可以输入: iptables -flush

要添加IP段到封停列表中,使用下面的命令:

iptables -I INPUT -s 121.0.0.0/8 -j DROP

其实也就是将单个IP封停的IP部分换成了Linux的IP段表达式。关于IP段表达式网上有很多详细解说的,这里就不提了。

我知道答案,我要回答