在阿里雲租了一臺服務器,是ECS的裸裝,在上面安裝了tomcat和項目以後跑了一段時間,沒過幾天發現帶寬的流量特別高,其實自己程序訪問的沒有幾個用戶,可是帶寬的流量已經消耗了好幾百老人頭了,這是一個值得去關注的問題,如何解決當下這種狀況。java
解決方案有二種:tomcat
1.重裝系統,從新來一遍,說實話這確實是最快的方法,可是卻不是解決問題的根本之道;服務器
2.照目前來看,確定是被人掃成肉雞了,因此找到對應的發送數據包的程序,而後kill 掉。網絡
我我的傾向於第二種解決方案,因此須要準備一些工具着手去作這些事,須要用到的工具:mvc
tcpdump、libpcap(tcpdump依賴於此)、iftoptcp
ok這些工具都是須要安裝的,安裝包我會提供出來,相應的安裝教程也貼出來工具
1、安裝tcpdumpflex
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 到了如今基本上就能作分析了,可是若是想要找到具體緣由這仍是遠遠不夠滴。
2、安裝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
一、iftop界面相關說明
界面上面顯示的是相似刻度尺的刻度範圍,爲顯示流量圖形的長條做標尺用的。
中間的<= =>這兩個左右箭頭,表示的是流量的方向。
TX:發送流量
RX:接收流量
TOTAL:總流量
Cumm:運行iftop到目前時間的總流量
peak:流量峯值
rates:分別表示過去 2s 10s 40s 的平均流量
使用示例:
iftop -i eth1 -B -n -N -P
看下有沒有異常的ip,接收或發送流量特別大的都是有問題滴,能夠看看ip是哪裏的。
3、配合命令
netstat -apn
查看全部的進程和端口使用狀況。
重點看這裏
看看哪一個ip是不正常的用的端口也是不正常的,若是是阿里雲的機器能夠在控制檯設置公網入方向的端口和公網出方向的端口,只打開有用的端口
這時在配合iftop去分析,很容易就發現有問題的ip和端口了,看看若是你的機器仍是一直在向外發送流量 那麼就找到這個程序的pid
ps -aux|grep pid
經過上面的命令很容易看到這個程序在哪一個地址下運行着,先kill -9 892 掉而後刪除對應的目錄
若是感受程序會再生的話能夠經過 find -name "程序名" 找找
重啓,若是還有問題的話重複上面的操做便可。