我有一个在IIS6服务器上运行的ASP.NET Web应用程序。该应用程序正在对远程计算机上的xml服务进行长时间运行的调用。远程计算机上的某些服务调用需要很长时间才能执行(有时长达4分钟)。长期解决方案是使调用异步,但作为短期解决方案,我们希望增加调用的超时和整个httpRequest超时。
我担心的是,长时间运行的呼叫将填满请求队列并阻止“正常”页面请求完成。如何调整服务器,IIS和应用程序设置以临时解决问题?
目前每分钟大约有200个请求,这导致270个服务请求/分钟。
答案 0 :(得分:7)
这篇关于微软知识库的文章几乎包含了你可能需要的所有信息:
<小时/> 我将就上面文章中处理的一些具体项目进行一些研究。以下信息适用于IIS6,适用于IIS7的注释。
Threadpool大小的默认值为100,因为autoConfig的默认值为 true 。
autoConfig 涵盖的值为
还有一个必须更改的值是 - ASPProcessorThreadMax,这只能在IIS6中的IIS配置数据库(通过 adsutil 工具)中设置。 [IIS7相当于processorThreadMax值]
所以我选择不更改 machine.config 设置,因为它们很好,还有其他参与者会因关闭 autoconfig 而受到影响,而是通过IIS元数据库将ASPProcessorThreadMax从25更改为100(更改此值的唯一方法)。
e.g。
cscript %SYSTEMDRIVE%\Inetpub\AdminScripts\<nowiki>adsutil.vb</nowiki>s SET W3SVC/AspRequestQueueMax 100
maxconnection autoconfig 将此值设置为12 * cpu的数量,即一次连接到的每个地址可以建立的连接数。
您可以执行以下操作:
监控以下计数器:
这将告诉我们,由于工人短缺,工作项目是否排队等。