阿里云服务器排查带宽流量过大的程序

时间:2024-03-10 21:01:20

在阿里云租了一台服务器,是ECS的裸装,在上面安装了tomcat和项目之后跑了一段时间,没过几天发现带宽的流量特别高,其实本身程序访问的没有几个用户,但是带宽的流量已经消耗了好几百老人头了,这是一个值得去关注的问题,如何解决当下这种情况。

解决方案有二种:

1.重装系统,重新来一遍,说实话这确实是最快的方法,但是却不是解决问题的根本之道;

2.照目前来看,肯定是被人扫成肉鸡了,所以找到对应的发送数据包的程序,然后kill 掉。

我个人倾向于第二种解决方案,所以需要准备一些工具着手去做这些事,需要用到的工具:

tcpdump、libpcap(tcpdump依赖于此)、iftop

ok这些工具都是需要安装的,安装包我会提供出来,相应的安装教程也贴出来

一、安装tcpdump

http://blog.csdn.net/maxwell_nc/article/details/45270083

这篇博客讲的非常好,安装步骤也比较详细,为了保证资源不丢失我就转一下内容吧

yum install flex  
yum install bison  
yum install gcc  

yum这个命令我就不多做解释了Centos用的,不会的大家可以百度一下

上面这三个是安装tcpdump必要的库

另外tcpdump是基于libpcap,这个在yum找不到,我们到tcpdump的官网(http://www.tcpdump.org/#latest-release)可以下载libpcap和tcpdump 
我这里使用的tcpdump-4.9.0.tar.gz和libpcap-1.8.1.tar.gz 。 
首先解压libpcap,然后进入目录配置安装

./configure
make              
make install   

然后解压tcpdump,然后进入目录配置安装

./configure
make              
make install  

一切顺利的话,就可以使用tcpdump进行抓包了。

具体的tcpdump命令可参考上面的引用地址

小例子:tcpdump -i eth0 port 80 -c 3 -t

(1) -i eth0 : 只抓经过接口eth0的包 
(1) port 80 : 抓取数据包只抓取80端口的 
(3) -c 3 : 只抓取3个数据包 
(4) -t : 不显示时间戳 

一般来讲tcpdump 配合wireshark这个软件去使用,这个软件百度一搜就搜到了,然后将tcpdump生成的文件放到这个wireshark去分析即可。

OK 到了现在基本上就能做分析了,但是如果想要找到具体原因这还是远远不够滴。

二、安装iftop去分析

iftop 是类似于top的实时流量监控工具。主要用来显示本机网络流量情况及各相互通信的流量集合,如单独同那台机器间的流量大小,非常适合于代理服务器和iptables服务器使用

官方网站:http://www.ex-parrot.com/~pdw/iftop/

在官网下载即可,后面我也会将具体的文件下载地址贴出来

tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make
make install

检测环境时提示:checking for a curses library containing mvchgat... none found

解决办法:yum -y install ncurses-devel

1、iftop界面相关说明
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。

中间的<= =>这两个左右箭头,表示的是流量的方向。

TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

使用示例:

iftop -i eth1 -B -n -N -P

看下有没有异常的ip,接收或发送流量特别大的都是有问题滴,可以看看ip是哪里的。

三、配合命令

netstat -apn 

查看所有的进程和端口使用情况。

重点看这里

看看哪个ip是不正常的用的端口也是不正常的,如果是阿里云的机器可以在控制台设置公网入方向的端口和公网出方向的端口,只打开有用的端口

这时在配合iftop去分析,很容易就发现有问题的ip和端口了,看看如果你的机器还是一直在向外发送流量 那么就找到这个程序的pid

ps -aux|grep pid

通过上面的命令很容易看到这个程序在哪个地址下运行着,先kill -9 892 掉然后删除对应的目录 

如果感觉程序会再生的话可以通过 find -name "程序名" 找找 

重启,如果还有问题的话重复上面的操作即可。

安装程序:http://pan.baidu.com/s/1dEM9utb