gpt4 book ai didi

asp.net - 大型 Web 应用程序中的 HTTP Keep Alive

转载 作者:可可西里 更新时间:2023-11-01 15:08:28 24 4
gpt4 key购买 nike

我在 IIS 7.0 上部署了一个 Web 应用程序。该应用程序可供大量用户访问并处理大量数据。我的问题是关于默认设置为 true 的 HTTP Keep-Alive 选项。

将 HTTP Keep-Alive 设置为 false 或 true 是更好的方法。

在 true 的情况下是使用超时的好方法吗?

最佳答案

KeepAlive 通常应该用于处理 紧跟 HTML 请求的请求。比方说,在第一次访问您的网站时,我得到一个包含 5 个 css、5js 和 25 个图像的 HTML 页面,我将使用我仍然有效的 HTTP 连接来请求这些东西(好吧,取决于浏览器,我可能会使用3 连接来加速这些事情)。

为了处理这个事实,我们通常使用 2s 或 3s 的 Keepalive。保活时间更长意味着连接正在等待用户可能请求的下一页。这可能是一种有效的思维方式,下次用户需要一个页面时,我们将避免浪费时间建立 HTTP 连接(这可能是请求/响应时间中最长的部分)。但对于您的服务器而言,这意味着服务器处理的大部分 HTTP 连接都无所事事。您将到达您的 MaxConnection(W3SVC/MaxConnections,默认值为 10,这很可笑),连接什么也不做。特别糟糕。 So long keep-alive 需要大型网络服务器,只有在您的应用程序确实需要时才应使用它。

如果您在“经典网站”中使用 Keepalive,您必须更改连接超时(默认为 2 分钟)。在 Apache 中,您将有 2 个设置,一个保持事件超时(默认为 5 秒)和一个连接超时(2 分钟)。在 IIS 中,超时设置似乎用于两者。所以不要将它设置为 2 秒(客户端发送请求的速度非常慢会超时),但 10 秒这样的值可能就足够了。现在一种响应是禁止 Keep-Alive,并让浏览器打开更多连接。另一种应对方法是使用现代网络服务器(例如 nginx 或 cherokee),它以比 Apache 或 IIS 更优雅、更省资源的方式处理保持连接。

即使不使用Keepalive,客户端超时还要等2分钟是什么原因?它肯定太高了,降低这个值到 60s 之类的值。

然后你应该检查几个与超时相关的设置(ConnectionTimeout, HeaderWaitTimeout, MinFileBytesPerSec)和这个关于performances settings的不错的回复在注册表中。

关于asp.net - 大型 Web 应用程序中的 HTTP Keep Alive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6107286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com