我们的网站在两台装有 iis 7.5 的计算机上运行 一个工作正常。
另一个在应用程序池回收后需要很长时间才能处理第一个请求。它可能需要 60 秒以上,这是 Not Acceptable ,因为它将用作我们的生产服务器。
我检查了两台服务器上的应用程序池设置,它们是相同的,并且两台服务器上的 webapp 版本也是相同的。 我已经运行了任务管理器和资源监视器,添加了在发出请求时看到与计算机的连接,但没有其他任何反应,iis 甚至在请求完成之前都没有在日志中显示该请求。 我真的不知道它同时在做什么。
是否有任何设置痕迹可供我们尝试修复此问题或找到问题。 非常令人费解。
编辑: 所以我现在有了更多信息,最终让失败的请求日志正常工作(必须授予用户 IIS_IUSRS 权限),但我有一些日志可以查看发生了什么
日志文件中丢失的时间在两秒之间。
1. MODULE_PRECONDITION_NOT_MATCH Name="ScriptModule-4.0", Precondition="managedHandler,runtimeVersionv4.0" 12:09:46.422
2. VIRTUAL_MODULE_UNRESOLVED Name="FormsAuthentication", Type="System.Web.Security.FormsAuthenticationModule" 12:12:04.390
正如您所看到的,这两个事件之间花费了超过 2 分钟的时间,以前有人遇到过这种情况吗?
最佳答案
这有点难以判断您的其他服务器上发生了什么,但是这里有一个您可能需要重新考虑的简单 list :
始终预编译您的网站,而不是复制它!在部署之前编译网站可能会获得显着的性能提升: ASP.NET Precompilation Overview
不要使用
debug="true"
运行生产应用程序启用后,当 web.config 中的调试标志为 true 时,应用程序在运行时会使用更多内存,并且由于启用了一些额外的调试路径,代码执行速度会慢得多检查您的 Web.config 文件以确保在
<trace>
中禁用跟踪。部分IIS 7.5 附带 Auto-Start Feature 。 WAS(Windows 进程激活服务)启动所有配置为自动启动的应用程序池,确保您的应用程序池配置为
AlwaysRunning
在 IIS 7.5applicationHost.config
, check out here了解更多详情查看
ASPNET.CONFIG
文件以查看两台服务器上的配置是否仍然相同。每个asp.net服务器都可以通过aspnet.config
很好地配置文件位于框架文件夹的根目录确保您的 aspnet.config 文件中的代码访问安全发布者证据 (CAS) 设置为 false,这可能会增加您重新启动 ASP.NET 应用程序池时的初始页面负载。您可以阅读more about it here 。
以下是禁用检查应用程序的 CAS 发布者策略的方法:
<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
</configuration>
- 您也可能想尝试Application Initialization Module for IIS 7.5 ,此模块在 IIS 8.0 上也可用,可以通过预加载工作进程来减少首次请求的响应时间
关于asp.net - IIS 7.5 Web 应用程序在应用程序池回收后的第一个请求非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13917205/