asp.net - IIS 7.5 Web 应用程序在应用程序池回收后的第一个请求非常慢

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

我们的网站在两台装有 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.5 applicationHost.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>

关于asp.net - IIS 7.5 Web 应用程序在应用程序池回收后的第一个请求非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13917205/

相关文章:

security - IIS 7.5 安全通信错误 - 基础连接已关闭 : Could not establish secure channel for SSL/TLS

windows - 在 Windows Server 2008 上使用 npm 安装 Node 包/依赖项

64-bit - Windows Server 2008 不喜欢我的 exe (KernelBase.dll)

c# - 使用 Windows 身份验证和匿名身份验证获取 UserPrincipal

powershell - Get-WindowsFeature 的替代方案

c# - 显示大量文本

ASP.NET MVC、Webforms 和 HTTP 处理程序 (.ashx) - 哪个是最轻量级的?

c# - ASP.net UserControl 和 AppDomain TypeResolve

javascript - 如何检查选项是否包含空字符?

iis - 无法使用 WAMP ,端口 80 由 IIS 7.5 使用