在IIS7 ASP.NET应用程序 - IISRESET后很慢启动(ASP.NET applica

2019-08-07 11:24发布

我有一个ASP.NET 3.5的网站在Windows 2008 IIS7下运行。

当我重新启动IIS(IISRESET),然后打一个页面,初始启动实在是太慢了。

我看到的Process Explorer以下活动:

  • w3wp.exe的产卵,但显示出约60秒0%CPU活动
  • 最后,程序w3wp.exe去50%的CPU约5秒钟,然后在页面加载。

我没有看到使用CPU的任何其他进程要么在这段时间。 它基本上只是挂起。

在所有的时间发生了什么事? 我如何追查是什么考虑这么长的时间?

Answer 1:

我们也有类似的问题,它原来是视窗超时检查签名证书的吊销。 请检查您的服务器是否正在试图某处调出(如crl.microsoft.com)。 也许你有一个代理设置不正确的? 或在路上防火墙? 我们最终确定我们有足够的控制服务器,并没有想“打电话回家”,所以我们干脆禁用了检查。 你可以用.NET 2.0 SP1及更高版本中加入以下的machine.config中做到这一点。

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

我不知道,如果你可以把这个在你的app.config / web.config中。



Answer 2:

IL是由刚刚实时编译器转换为机器的本地代码(组件),你会得到等待所有的魔法发生。

当编译源代码托管代码,编译器将源到Microsoft中间语言(MSIL)。 这是一个CPU无关的指令集能有效地被转换为本地代码。 Microsoft中间语言(MSIL)是用作许多编译器的输出的翻译。 这是输入到刚刚在实时(JIT)编译器。 公共语言运行库包括用于MSIL的本机代码转换JIT编译器。

之前微软中间语言(MSIL)可以执行它,必须由.NET Framework刚刚实时(JIT)编译为本地代码转换。 这是在相同的计算机体系结构作为JIT编译器运行CPU特定代码。 而不是使用时间和内存的所有MSIL的转换在可移植可执行(PE)文件到本机代码。 它转换MSIL根据需要而执行的,则缓存所产生的本地代码,以便其对任何后续调用访问。

资源



Answer 3:

那是asp.Net页的汇编成中间语言+ JIT编译 - 它只是发生在第一次加载页面。 (见http://msdn.microsoft.com/en-us/library/ms366723.aspx )

如果它真的困扰你,那么你可以通过编译前您的网站阻止它发生。

编辑:只是重新读取问题- 60秒很长,你会期望在这段时间看到一些处理器活动。 检查事件日志在系统和应用程序的目的地错误/消息。 也可以尝试这60秒钟内创建w3wp进程的崩溃转储 - 有你可能会认识到什么它通过看一些调用堆栈做的机会。

如果需要正是它在等待着什么超时,每次60秒钟,然后它的可能- 60秒一个不错的轮数。 请确保它具有对域控制器等适当的连接...

(如果有一些IIS的诊断工具,会做的更好,然后我害怕,我不知道他们的,这个问题可能更适合ServerFault,上面是一个更开发商十岁上下的故障排除方法: - p)



Answer 4:

我发现有一个网络延迟使得从前端Web服务器到数据库服务器的初始连接。

问题是特有的Windows 2008和我们具体的网络硬件。

该决议是禁用Web服务器上的以下内容:

  • 烟囱卸载状态

  • 接收窗口自动调节水平



Answer 5:

大于60秒听起来可疑。 试运行的test.html页面,看多久是需要。 这将隔离IIS7的作用。

然后临时重命名你的web.config,global.asax的和应用程序文件夹中,然后尝试Test.aspx的页面(很简单的页面)。 这将隔离ASP.NET。

如果这两个都是快(即约10秒),那么它的应用程序。 但是,如果任一慢再不是应用程序和一些与服务器本身。



Answer 6:

这顶帽子无关,与JIT编译。 正常的C#编译器编译隐藏文件(.aspx.cs)你的代码中间语言到一个程序在启动时,如果该组件不存在或代码文件已经改变。 您的网站集位于你的网站的“bin”文件夹。

事实上,JIT编译后occures,但这是非常快的,并不会花费几分钟时间。 JIT编译发生在一个.NET应用程序的每一次启动,这将不会超过一个视图秒钟。

你能避免你的网站的copmpiling如果部署已编译的网站组件(YourWebsite.dll)到bin文件夹。 它也可以只部署ASPX文件和留下的文件(aspx.cs)的代码文件了。



文章来源: ASP.NET application on IIS7 - very slow startup after iisreset