昨天晚上突然收到邮件,一个非常重要的VPS流量使用超过80%。邮件主要内容如下:
Your VPS has exceeded the bandwidth quota threshold for notification. It has used 240.3685 GB of 300 or 80.1%.
240G,怎么可能呢,今天来公司,赶紧检查一下。
首先安装iptop,参考了http://www.vpser.net/manage/iftop.html,其实里面就2点就ok了:
1. 运行:apt-get install iftop
2. 界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<= =>这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
安装好之后运行iptop,发现VPS上的一个网站确实流量占用的非常大,每秒在4M作用。再看一下VPS流量,使用量已经超过90%了。先不管什么原因了,把网站先停了再说。打开网站根目录下的.htaccess文件,加入RewriteRule (.*) – [F],先让网站返回403.
然后把网站进行了转移,转到一个不是很重要的VPS上。网站转移的话,先对现在的网站进行打包压缩,参考了http://www.douban.com/note/57861194/,命令为tar -zcvf /tmp/etc.tar.gz site.com。打包好之后把压缩包用mv命令转移到一个服务器上的一个网站下,然后在目标VPS上运行wget命令直接获取压缩包,然后进行解压缩。解压缩命令为tar -zxvf /tmp/etc.tar.gz。这样网站的文件部分就实现转移了。
最后对数据库进行转移。数据库转移中遇到的问题是数据文件太大,需要先改一下vps的php.ini参数,具体修改三个地方即可:
1、执行时间限制的延长或取消:
max_execution_time 默认是30秒.改为 max_execution_time = 0 (0表示没有限制)或更大点的数字;
2、查找 post_max_size = 2M (默认为2M)改为想要的大小,如:post_max_size = 70M
3、upload_max_filesize 表示所上传的文件的最大值。
查找upload_max_filesize,默认为8M改为
upload_max_filesize = 70M
修改完之后通过phpmyadmin就可以实现数据文件的导出,以及在目标VPS的导入了。
文件和数据转移完之后,修改DNS,恢复根目录下的htaccess文件,网站就又可以正常访问了。但还需要解决的问题是对网站的程序进行修改,以免再发生类似的流量问题。