非常怪异的服务器网络问题【续】,附排查问题思路
上次写了 “非常怪异的服务器网络问题,请有经验的朋友帮忙看下”这篇文章后,得到大家的帮助,让问题范围变少,非常感谢大家!
问题的现象是:我使用Connection:keep-alive的连接不断的访问测试页面,测试页面没有问题。
通过在firefox上安装modify header插件将Connection修改为close然后连接不断的访问测试页面,测试页面过一段时间就会出现"unable to connect"的错误。
出现这个错误的时候页面很快就会返回,而不像503错误的时候要等待一段时间才返回。
测试页面一个是asp.net页面,一个是静态文件。两个会同时出现问题。
这个说明服务器在出现问题的时候无法创建新的连接来响应请求。
为了进一步缩小问题的范围:
我通过在服务器上访问127.0.0.1来测试,还是出现上面的问题,这个基本上可以排除是网络引起的问题了,因为127.0.0.1不需要经过网卡。
这样基本上可以确定是程序或者IIS的问题了。
为此我为网站添加了两个“主机头”,用了8080端口。我同时通过127.0.0.1和127.0.0.1:8080端口访问测试页面:
发现8080端口一直都没有出现问题,而80端口还是出现跟上面一样的问题。
这证明IIS无法在80端口创建更多的连接来响应请求。
我初步判断跟负载会有关系,为此我新建了一个计划任务,在凌晨3:00钟的时候自动打开firefox浏览器,然后自动通过80和8080商品访问测试页面:
今天早上发现8080端口一直没有问题,而80端口在早上07:09:48的时候出现“Unable to connect”的情况。
以前一般在半小时以内就会出现问题,这个测试用了4个小时才出现问题。这说明这个问题跟负载确实有关。
请大家帮忙分析一下,在什么样的情况下会引起这种现象,感激不尽!我快被这个问题折磨疯了。
我之前碰到程序的问题大部分都是引起CPU过高,而不会出现无法建立连接的情况。
这次CPU什么的都很正常,事件查看器里面和iis log以及httperr里面一直没有任何相关信息,让人无从下手。
我们有一个网站之前有大量访问淘宝API,后来我禁用此功能后还是出现此问题。其他的对外链接就是访问新浪微博和腾讯微博,以及支付宝和快钱等网关了。