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

Internal server error 500 when tweaking web.config using maxWorkerThreads

我想提高 IIS 上 ASP.NET Web 应用程序的性能。有时,当许多用户连接到它时,它会变得太慢。此应用程序使用默认的 InProc 模式作为会话状态。在尝试网络花园或网络农场之前,我决定尝试其他替代方案,例如在 system.web 部分下的 web.config 文件中调整以下参数:

<system.web>  
    <processModel maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50"/>

    <httpRuntime minFreeThreads="704" minLocalRequestFreeThreads="608"/>
</system.web>

设置这些参数后我无法访问 ASP.NET 应用程序,出现错误 500 内部服务器错误。

如果我删除以上设置,应用程序可以正常工作。

服务器是一个虚拟机,它有一个带有 12 个虚拟处理器的 Intel® Xeon® 处理器 E5 v3。

有什么想法吗?

终于解决了

为了下面一行的工作:

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

感兴趣的链接