应用程序池回收后IIS 7.5 Web应用程序首次请求非常慢

时间:2012-12-17 15:37:53

标签: asp.net iis-7.5 windows-server-2008

我们的网站在iis 7.5的两台机器上运行 一个工作正常。

另一个如何在应用程序池回收后处理第一个请求需要很长时间。由于它将被用作我们的生产服务器,因此它可能需要超过60秒,这是不易察觉的。

我检查了两台服务器上的应用程序池设置,它们是相同的,两台服务器上的webapp版本是相同的。 我运行任务管理器和资源监视器,在我发出请求时添加查看与机器的连接,但没有其他任何事情发生,iis甚至没有在日志中显示请求,直到完成。 我真的不知道它在做什么。

我们可以尝试使用哪些设置来修复此问题或查找问题。 这非常令人费解。

编辑: 所以我现在有了更多的信息,finall得到失败的请求日志工作(必须给用户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分钟以上的时间,任何人都会先讨论这个事件吗?

1 个答案:

答案 0 :(得分:20)

这有点难以说明你的其他服务器上发生了什么,但是这里有一个你可能想重新考虑的简单清单:

  • 始终预编译您的网站,而不是复制它!在部署之前,您可能会在编译网站时获得显着的性能提升: ASP.NET Precompilation Overview

  • 当web.config中的debug标志为true时,不要运行启用了debug="true"的生产应用程序,运行时在应用程序中使用了更多的内存,并且因为启用了一些额外的调试路径,代码可以执行得慢得多

  • 检查您的Web.config文件以确保在<trace>部分

  • 中禁用跟踪
  • IIS 7.5附带Auto-Start Feature。 WAS(Windows进程激活服务)启动配置为自动启动的所有应用程序池,确保在IIS 7.5 AlwaysRunningcheck out here中将应用程序池配置为applicationHost.config以获取更多详细信息

  • 查看ASPNET.CONFIG文件,查看两台服务器上的配置是否仍然相同。每个asp.net服务器都可以通过位于框架文件夹根目录的aspnet.config文件进行良好配置

  • 确保aspnet.config文件中的代码访问安全性(CAS)的发布者证据设置为false,这可能会在您重新启动ASP.NET应用程序池时增加初始页面加载。你可以阅读more about it here

以下是禁用检查应用程序的CAS发布者策略的方法:

<configuration>
    <runtime>
        <generatePublisherEvidence enabled="false"/>
    </runtime>
</configuration>