使用maxWorkerThreads调整web.config时发生内部服务器错误500

时间:2019-06-04 15:13:18

标签: asp.net asp.net-mvc iis http-error tweak

我想提高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。

有什么想法吗?

1 个答案:

答案 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" />

感兴趣的链接