一个链接引发的血案---------服务器 IO及网络流量暴涨解决历程


环境:Ubuntu + Nginx + php-cgi + Wordpress

惊讶的发现IO读写速度,网络流入流出速度都出现了十倍的增长。下面是正常情况下的数字(依次是CPU, IO读速度,IO写速度,网络流出速度,网络流入速度),出问题时的截图没有保留下来,但记得IO读写速度都在250k/s左右,网络流出速度在2M~5M之间,流入速度也在100k左右。

第一反应是难道某些插件不支持多站模式,特别是一些缓存插件。但觉得暂时还是不要怀疑这些插件,那些都是很成熟的插件,一时也没有时间去研究他们的代码去找原因。先把现象搞清楚,得先根上找原因。

 

 

因为在更改wordpress配置时,也把ubuntu系统进行了一些update,所以先找找是否有什么异常的服务或者一些特殊的端口。

 

 

 

 

发现日志确实有点大,但也没有大到离谱的地步,就立即执行了一次人工分割。logrotate -vf /etc/logrotate.conf

222.85.131.142 - - [12/Jul/2013:14:11:30 +0800] "GET /wp-content/uploads/2013/07/IMG_0604.jpg HTTP/1.1" 404 31 "-" "null (FlipboardProxy/1.1; +http://flipboard.com/browserproxy)" - 0.088 0.088 - 222.85.131.142 - - [12/Jul/2013:14:11:31 +0800] "GET /wp-content/uploads/2013/07/IMG_0604.jpg HTTP/1.1" 404 31 "-" "null (FlipboardProxy/1.1; +http://flipboard.com/browserproxy)" - 0.104 0.104 - 221.233.53.238 - - [12/Jul/2013:14:11:35 +0800] "GET /wp-content/uploads/2013/07/IMG_0604.jpg HTTP/1.1" 404 31 "-" "null (FlipboardProxy/1.1; +http://flipboard.com/browserproxy)" - 0.082 0.082 - 222.85.131.142 - - [12/Jul/2013:14:11:37 +0800] "GET /wp-content/uploads/2013/07/IMG_0604.jpg HTTP/1.1" 404 31 "-" "null (FlipboardProxy/1.1; +http://flipboard.com/browserproxy)" - 0.090 0.090 - 222.85.131.142 - - [12/Jul/2013:14:11:42 +0800] "GET /wp-content/uploads/2013/07/IMG_0604.jpg HTTP/1.1" 404 31 "-" "null (FlipboardProxy/1.1; +http://flipboard.com/browserproxy)" - 0.099 0.099 - 183.219.208.255 - - [12/Jul/2013:14:11:45 +0800] "GET /wp-content/uploads/2013/07/IMG_0604.jpg HTTP/1.1" 404 31 "-" "null (FlipboardProxy/1.1; +http://flipboard.com/browserproxy)" - 0.117 0.117 - 222.85.131.142 - - [12/Jul/2013:14:11:46 +0800] "GET /wp-content/uploads/2013/07/IMG_0604.jpg HTTP/1.1" 404 31 "-" "null (FlipboardProxy/1.1; +http://flipboard.com/browserproxy)" - 0.116 0.116 - 221.233.53.238 - - [12/Jul/2013:14:11:48 +0800] "GET /wp-content/uploads/2013/07/IMG_0604.jpg HTTP/1.1" 404 31 "-" "null (FlipboardProxy/1.1; +http://flipboard.com/browserproxy)" - 0.084 0.084 -

情况渐渐明了:

我的cdn功能是这么实现的:将文章内我们网站地址链接都更换成cdn服务器的。之前网站地址配置为http://www.main.com时,文章里的图片链接都是http://www.main.com, 我现在将主站地址配置为http://main.com后,cdn功链接替换也只对http://main.com有效了,于是以前的那些文章中的图片都没有cdn功能了,悲剧了。

但还有一个小插曲,第二天到了公司后,发现io还是很高。虽然比之前降了不少,于是按照上面的方法查找哪些文件被这么频繁读取,查了之后还是上面那个图片(IMG_0604)特别多。发现是从Flipboard来的,于是找旁边一个同事借了他的ipad用Flipboard看了一下这篇文章,但不知道如何在ipad里查看图片源链接。一看到是Flipboard心里差不多明白了:之前还替Flipboard准备过一个专门的rss输出的,而且rss是有很变态的缓存,肯定是Flipboard缓存了这篇文章而且不带cdn效果,碰巧这篇文章还挺热闹,给我们引入了大的PV的同时也增加了我们的负载。

 

相关内容