满园尽是503,记曾经的一次IIS 7性能考验

在一个漆黑的夜晚,伸手不见五指,一个黑衣人偷偷潜入博客园的图片库,放了一些图片,然后迅速消失在黑幕中...

在人山人海的淘宝网,也出现了一个黑衣人,在淘宝网的产品库中,将一些产品展示页面中的素材图片指向了博客园图片库中的图片...

史上最强的一次风暴席卷整个博客园,巨量的访问请求涌向博客园,访问速度越来越慢,然后就是“满园尽是503”。

IIS 7的同时连接达到了设置的上限20000,上限改为3万,同时连接立即达到3万,改为5万,同时连接立即会达到3万...

开始以为是拒绝服务攻击(DDOS),后来发现是“黑衣人”上传的图片,淘宝网上很多页面引用了这些图片...

找到了原因,原以为可以轻松地解决问题,将这些图片移走就会风平浪静,雨过天晴。哪知,图片不在,503依旧...

这样都不行,几乎让人崩溃了。图片请求是由IIS7的StaticFileModule(位于%windir%\System32\inetsrv\static.dll)处理的,虽然图片不存在,但对于这么大的请求,IIS 7仅仅是接受请求,检查文件是否存在,然后返回404这样的处理都顶不住。只要淘宝上的图片引用存在,503将一直继续,难道只有联系淘宝处理这些图片引用。即使淘宝处理了图片引用,但以后只要谁在访问量大的网站放一个不存在的指向博客园的链接,IIS还是处理不了。根本的解决办法还是要能应对这样的巨量请求。

这时,博客园团队中有一个人急中生智,说试试通过ISAPI_Rewrite对图片请求进行重定向。当时想连微软自己的IIS7都处理不了,难道由第三方写的ISAPI Filter能处理。不管怎么样,试试这个方法吧。不试不知道,试了吓一跳,在ISAPI_Rewrite的http.ini中写了重定向规则(重定向至淘宝网站)之后,奇迹出现了,问题解决了。

好了,这篇随笔目的就是把博客园实际遇到过的一个问题与大家分享,希望能给大家带来一点收获与思考。

posted @ 2010-06-13 10:57  dudu  阅读(8867)  评论(92编辑  收藏  举报