我有一个部署在IIS 7.0上的Web应用程序.该应用程序可由大量用户访问并操纵大数据..my问题涉及默认情况下设置为true的HTTP Keep-Alive选项.
将HTTP Keep-Alive设置为false或true是一种更好的方法.
在真实的情况下使用超时的好办法?
解决方法
通常应使用KeepAlive来处理紧跟
HTML请求的请求.让我们先来看看你的网站,我得到一个包含5个css,5j和25个图像的HTML页面,我将使用我仍然存在的HTTP连接来请求这些东西(这取决于浏览器,我可能会使用3连接加速这些事情).
为了处理这个事实,我们通常使用2秒或3秒的Keepalive.具有更长的keepalive意味着连接正在等待用户可能请求的下一页.这可能是一种有效的思维方式,下次用户想要一个页面时,我们将避免建立HTTP连接的时间松动(这可能是请求/响应时间的最长部分).但是对于您的服务器,意味着由服务器处理的大多数HTTP连接正在做…什么都没有.并且您将达到您的MaxConnection(W3SVC / MaxConnections与可笑的默认为10),连接不做任何事情.特别糟糕.这么长的活着需要大的网络服务器,只有当你的应用程序真的需要它时才应该使用它.
如果您在“古典网站”中使用Keepalive,则必须更改连接超时(默认为2分钟).在Apache中,您将有2个设置,一个keepalive tiemout(默认为5秒)和一个连接超时(2分钟).在IIS中似乎超时设置用于两者.所以不要把它设置为2s(一个客户端发送他的请求会很慢会超时),但像10s这样的事情也许就够了.现在一个回应是禁止Keep-Alive,并使浏览器打开更多的连接.另一个回应是使用一个现代化的网络服务器(比如Nginx或者例子),它以比Apache或者IIS更优雅和无资源的方式处理保持连接.
即使您不使用Keepalive,客户端超时等待2分钟的原因是什么?这肯定太高了,把这个价值降到60年代.
那么你应该检查几个与超时相关的设置(ConnectionTimeout,HeaderWaitTimeout,MinFileBytesPerSec)和这个很好的响应在performances settings在注册表中.