我正在优化我的 Web 服务器设置以处理大量并发用户,我遇到的问题之一是决定是否禁用 HTTP Keep-Alive。
我对站点上的所有图像都使用 CDN,因此当请求我的 HTML 页面时,我会在第一次加载时下载大约 5 个文件(js、css 等)……然后在每次连续加载时只下载 HTML。
除此之外,我唯一拥有的是每秒调用一次 HTTP POST 更新(生成的 JSON 通常小于 1KB)。
那么,有了这些限制 - 您认为在服务器上禁用 HTTP Keep-Alive 是个好主意吗?这会提高服务器可以处理的并发用户数吗?
(顺便说一下,我已经在 IIS 7.5 设置中将 KeepAliveTimeout/ConnectionTimeout 减少到 15 秒)
最佳答案
根据您的描述,您正在为每个客户每秒进行一次调用。所以一切都归结为服务请求需要多少时间。如果比方说,服务请求需要 100 毫秒。因此,这意味着 15 秒的 Http Keep-Alive 将有 15 个调用,无需重新建立连接,但连接实际处于事件状态(或正在使用)仅持续 1.5 秒 - 其余时间,您实际上阻止了一些客户端/连接(假设有任何客户端)。如果没有保持事件状态,您可能可以容纳 8-9 倍的并发客户端。
总而言之,您必须查看实际参数才能做出决定。您可能有多少个并发客户端以及响应时间是多少等。最好的方法是进行模拟/负载测试以衡量性能。因为如果您的服务器要使用 keep-alive 处理预期的最大并发用户负载,您可以很好地保持 keep-alive。
顺便说一句,另请参阅 SO 上的相关问题:http keep-alive in the modern age
关于asp.net - 每 1 秒 <1KB 调用的 HTTP Keep-Alive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6365848/