使用 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" />
感兴趣的链接:
- ASP.NET Processmodel Configuration Optimization
- Processmodel Configuration in web.config
- httpRuntime Element (ASP.NET Settings Schema)
- processModel Element (ASP.NET Settings Schema)
我想提高 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" />
感兴趣的链接:
- ASP.NET Processmodel Configuration Optimization
- Processmodel Configuration in web.config
- httpRuntime Element (ASP.NET Settings Schema)
- processModel Element (ASP.NET Settings Schema)