我想提高IIS上ASP.NET Web应用程序的性能。有时,当许多用户连接到它时,它变得太慢。此应用使用默认的InProc模式作为会话状态。在尝试使用Web Garden或Web Farm之前,我已经决定尝试其他替代方法,例如在system.web部分下的web.config文件中调整以下参数:
<system.web>
<processModel maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50"/>
<httpRuntime minFreeThreads="704" minLocalRequestFreeThreads="608"/>
</system.web>
设置完这些参数后,我无法访问ASP.NET应用程序,出现错误500内部服务器错误。
如果我删除上述设置,则该应用程序可以正常工作。
服务器是一台虚拟机,它具有带有12个虚拟处理器的英特尔®至强®处理器E5 v3。
有什么想法吗?
答案 0 :(得分:0)
最后我解决了。
为了在下面的行中起作用:
<processModel maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50"/>
...需要在以下位置的machine.config文件中进行修改:
systemroot\Windows\Microsoft.NET\Framework\VersionNumber\Config
systemroot\Windows\Microsoft.NET\Framework64\VersionNumber\Config
VersionNumber对应于您所使用的.NET Framework版本,在我的情况下为v4.0.30319
您必须将Machine.config文件中processModel部分的 allowDefinition 从MachineOnly更改为MachineToApplication:
<section name="processModel" type="System.Web.Configuration.ProcessModelSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" allowLocation="false" />
最后,罪魁祸首是因为以下行不起作用:
<httpRuntime minFreeThreads="704" minLocalRequestFreeThreads="608"/>
...是因为此行在web.config文件中的以下几行中被复制为:
<httpRuntime targetFramework="4.5" maxRequestLength="102400" executionTimeout="3600" maxQueryStringLength="8192" />
所以我将它们合并为以下一个:
<httpRuntime targetFramework="4.5" minFreeThreads="704" minLocalRequestFreeThreads="608" maxRequestLength="102400" executionTimeout="3600" maxQueryStringLength="8192" />
感兴趣的链接: