asp.net - 每 1 秒 <1KB 调用的 HTTP Keep-Alive

标签 asp.net http iis keep-alive

我正在优化我的 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/

相关文章:

javascript - AngularJS $q.all - 在 http 调用之间等待

http - 如何防止 IIS7 删除我的 cookie?

asp.net - IE - 本地和远程部署的系统之间的行为差​​异

asp.net - Session_End 不触发?

ASP.NET 2.0 : Skin files only work when placed at the root theme folder?

c# - 在Http Post请求中,提交表单和在正文中发送内容有什么区别

c# - Quartz.Net 使用 Windows 任务调度程序

c# - 下载文件到远程服务器 HTTP 400 错误

Azure应用服务: how to add custom Handler mapping to process TXT files?

iis - 默认情况下如何在IIS Express上启用目录浏览