gpt4 book ai didi

asp.net - 长时间运行的 HttpWebRequest

转载 作者:行者123 更新时间:2023-12-02 14:29:36 27 4
gpt4 key购买 nike

我有一个在 IIS6 服务器上运行的 ASP.NET Web 应用程序。应用程序正在对远程计算机上的 xml 服务进行可能长时间运行的调用。远程计算机上的某些服务调用需要很长时间才能执行(有时长达 4 分钟)。长期解决方案是使调用异步,但作为短期解决方案,我们希望增加调用超时和整体 httpRequest 超时。

我担心的是,长时间运行的调用会填满请求队列并阻止“正常”页面请求完成。如何调整服务器、IIS 和应用程序设置来暂时解决该问题?

目前,每分钟大约有 200 个页面请求,这导致每分钟有 270 个服务请求。

  • 当前执行超时为 360(6 分钟)
  • 当前服务调用超时为 2 分钟

最佳答案

Microsoft 知识库上有一篇文章,其中包含您可能需要的几乎所有信息:

* Contention, poor performance, and deadlocks when you make Web service requests from ASP.NET applications

<小时/>我将向您提供一些我对上面文章中处理的一些具体项目所做的研究。以下信息适用于 IIS6,注释适用于 IIS7。

将处理器工作线程池从 25 个增加到至少 100 个

线程池大小的默认值为 100,因为 autoConfig 的默认值为是真实

autoConfig涵盖的值为

  • 最大工作线程数
  • 最大IoThreads
  • 最大连接数

有一个值仍然是 25,必须更改 - ASPProcessorThreadMax ,这只能在 IIS6 的 IIS 元数据库中设置(通过 adsutil 工具)。 [IIS7 的等效项是 processorThreadMax值]

因此,我选择不更改 machine.config 设置,因为它们很好,并且关闭 自动配置 会影响其他参数,而是改变ASPProcessorThreadMax通过 IIS 元数据库从 25 到 100(更改此值的唯一方法)。

例如

cscript %SYSTEMDRIVE%\Inetpub\AdminScripts\<nowiki>adsutil.vb</nowiki>s SET W3SVC/AspRequestQueueMax 100

每台服务器的最大连接数

maxconnection自动配置将此值设置为 12*CPU 数量,即一次可以向您连接的每个地址建立多少个连接。

调试

您可以执行以下操作:

监控请求是否在队列中等待

监视以下计数器:

  • 运行perfmon
  • 添加计数器:    应用程序队列中的 ASP.NET 应用程序/请求

这将向我们显示工作项是否因 worker 短缺而排队。

检查应用程序池使用的身份

  1. 打开 IIS 管理器
  2. 在 IIS 管理器中检查您的网站使用的是哪个应用程序池。
  3. 应用程序池列表中选择正在使用的应用程序池,然后右键单击 -> 属性并查看正在使用的帐户身份。
  4. 默认情况下应为网络服务

关于asp.net - 长时间运行的 HttpWebRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2184423/

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