【问题标题】:Increase request queue limit of asp.net增加asp.net的请求队列限制
【发布时间】:2013-09-10 22:18:09
【问题描述】:

不确定我的标题在技术上是否正确,但我有问题。

我在 IIS 8 上有一个 asp.net 4.5 站点,并使用 asp.net 来控制/限制文件下载。 我没有让 IIS 处理大型(10-20MB)静态文件,例如 zip,而是使用 asp.net。

在大约 500 到 700 个用户开始下载之前,它可以正常工作。之后,asp.net 开始对域的所有请求进行排队,直到活动请求计数低于某种预定数量。

html 等静态内容不受影响。如果我启用多个工作进程,它会处理更多请求,但这会带来管理会话状态的问题。

如果我让 IIS 服务文件,则不会出现队列问题。 有没有办法增加asp.net的队列长度?

【问题讨论】:

    标签: asp.net download iis-8


    【解决方案1】:

    您可以修改请求队列限制和每个 CPU 允许的最大并发线程数

    <system.web> 
      <applicationPool 
           maxConcurrentRequestsPerCPU="12" 
           maxConcurrentThreadsPerCPU="0" 
           requestQueueLimit="5000"/> 
    </system.web>
    

    http://blogs.msdn.com/b/rakkimk/archive/2009/07/08/iis7-improving-asp-net-performance-concurrent-requests-while-on-integrated-mode.aspx

    但是,如果您的情况可能,我建议您通过 CDN 提供更大的静态文件。默认限制是有原因的。如果您将配置的值提高到远高于默认值,您可能会开始遇到性能问题和运行时错误。

    Amazon 的 S3 CDN(可能还有其他 CDN)提供了一系列选项来控制对 CDN 上文件的访问

    使您能够利用 IAM 用户策略提供的细粒度访问控制,同时通过使您能够进一步限制请求并将请求限制在每个用户的预定义时间,从而减少您的风险。

    http://aws.amazon.com/articles/5050/

    【讨论】:

    • 谢谢,我将在上面修改并应用到我的 web.config 以查看它是否有帮助。 CDN 不适合我。站点只是一个个人站点,它消耗的带宽在 CDN 上会非常昂贵
    • 哦,是给 Aspnet.config 的
    • 在这种情况下,您可能会考虑编写一个 HTTP 处理程序,它只检查任何必要的条件(例如用户已登录),然后静态地提供文件。这将消除 ASP.Net 处理开销。 msdn.microsoft.com/en-us/library/bb398986(v=vs.100).aspx
    • 对不起,我不想对您的回复提出异议。我已经这样做了,但是人们很聪明地掌握了实际位置并使用我的网站进行热链接:)
    • 您可以在 ASP.Net 页面中执行的任何操作,都应该能够在 HTTP 处理程序中执行。只是你没有 ASP.Net 页面语义。您可以检查引荐来源网址,您可以设置“用户有效”cookie 并在 HTTP 处理程序中检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 2020-12-23
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多