HTTP在大型Web应用程序中保持活动状态

| 我有一个通过IIS 7.0部署的Web应用程序。该应用程序可供大量用户访问并处理大量数据。.我的问题与HTTP Keep-Alive选项有关,该选项默认情况下设置为true。 将HTTP Keep-Alive设置为false或true是更好的方法。 如果是真的,使用超时的好方法是吗?     
已邀请:
通常应使用KeepAlive处理紧随HTML请求之后的请求。假设在您首次访问您的网站时,我得到一个包含5个CSS,5js和25个图像的HTML页面,我将使用仍然有效的HTTP连接来请求这些内容(嗯,取决于浏览器,我\可能会使用3个连接来加速这些操作)。 为了处理这个事实,我们通常使用2或3的Keepalive。保持活动时间更长意味着连接正在等待用户可能请求的下一页。这可能是一种有效的思维方式,下一次用户想要页面时,我们将避免浪费时间建立HTTP连接(这可能是请求/响应时间中最长的部分)。但是对于您的服务器来说,这意味着该服务器处理的大多数HTTP连接都无法执行任何操作。并且您将达到您的MaxConnection(W3SVC / MaxConnections,其可笑的默认值为10),而连接却无济于事。特别糟糕。如此长时间的保持活动需要大型Web服务器,并且仅在您的应用程序确实需要它时才应使用。 如果您在“经典网站”中使用Keepalive,则必须更改连接超时(默认为2分钟)。在Apache中,您将有2个设置,一个keepalive配合(默认情况下为5s)和一个连接超时(2分钟)。在IIS中,似乎两者都使用了超时设置。因此,请勿将其设置为2s(客户端发送请求的速度确实很慢,将会超时),但是大约10s可能就足够了。现在,一种响应是禁止“保持活动”状态,并使浏览器打开更多连接。另一个响应是使用现代的Web服务器(例如nginx或切诺基),它比Apache或IIS以更优雅,更节省资源的方式处理保持活动连接。 即使您不使用Keepalive,等待客户端等待2分钟的原因是什么?当然太高了,请将此值减小到60s左右。 然后,您应该检查与超时相关的几个设置(ConnectionTimeout,HeaderWaitTimeout,MinFileBytesPerSec)以及对注册表中的性能设置的良好响应。     
本文将带来更多真知灼见,并且别忘了检查“我们如何解决?”部分 http://mocko.org.uk/b/2011/01/23/http-keepalive-considered-harmful/     
我认为让所有用户都连接不是一个好主意。 因为: 用户只能打开您的网站,但不能使用它-为什么我们应该保持长时间连接? 保持大量连接非常困难(更多内存) 使用连接超时(最多5分钟就可以了) 但是:如果您的应用程序是实时聊天-您应该保持所有连接都处于活动状态。这样,最好使用Ajax Long Polling Request + Node JS +一些快速的nosql db来存储聊天消息。     

要回复问题请先登录注册