【问题标题】:Managing concurrent connections in IIS7在 IIS7 中管理并发连接
【发布时间】:2011-06-23 15:35:58
【问题描述】:

我的托管服务提供商 (winhost.com) 有问题。我的应用程序基于 ASP.NET 4 MVC 3 构建。直到几天前,一切都运行良好。突然间,我在尝试访问我的网站 (wikipediamaze.com) 时开始收到 503 错误。它不会一直发生,只是大多数时候。

当有人开始玩游戏时,会向 wikipedia.org 发出请求,以获取拼图当前步骤的页面内容。基本上我在屏幕上抓取 wikipedia.org,注入一些 html,然后显示结果。我所有的网络请求在收到数据后都会立即关闭。

winhost 告诉我的是,仍有连接保持打开状态,并导致对站点的任何其他请求都出现 503 服务不可用错误。从我的结尾我可以看到,一次只允许向 wikipediamaze.com 发出 1 个请求。如果您不断刷新页面,您最终会获得 HTML,但所有后续请求(css、图像、js)都会收到 503 错误。甚至从未调用过 wikipedia.org 的页面。

如果是 IIS 中的连接限制问题,传入和传出(内部发出的请求)是否都属于同一个存储桶?如果我确定我的所有连接都已关闭(而且我以前从未遇到过这个问题)还有什么可能导致这种情况?

这是一个托管环境,所以我有点束手无策,我知道所有这些都非常模糊,但如果有人有任何见解,将不胜感激。

【问题讨论】:

    标签: .net asp.net iis-7 asp.net-mvc-3


    【解决方案1】:

    我的第一个建议是确保在完成连接后关闭连接(最好使用 Using 语句),因为这样它们就可以被重复使用。我知道你说过你已经关闭了它们,但有时你必须处理它们。

    除此之外,您还可以通过将以下内容放入您的 web.config 文件中来更改您的服务器将与其他服务器建立的连接数。

    <system.net>
        <connectionManagement>
            <add address="*" maxconnection="48" />
        </connectionManagement>
    </system.net>
    

    【讨论】:

    • 我将它添加到配置中,但仍然有错误。我的应用程序中只有两个地方创建了 Web 请求,并且在这两个地方我都将它们包装在 using 语句中。
    • 您使用什么方法来执行网络请求?
    • 实际上在这种特殊情况下,我没有使用 using 语句,而是在 finally 块中关闭它。
    • 您是否考虑过使用 WebClient 类将 URL 作为字符串或流获取?当您不使用 HttpWebRequest 的任何高级功能(除了 UserAgent)时,您可以简化该部分。
    猜你喜欢
    • 2019-08-24
    • 1970-01-01
    • 2012-12-21
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 2016-07-03
    • 2019-02-15
    相关资源
    最近更新 更多