没有代码的ASP.Net 2.0应用程序在首次运行时需要2分钟加载的原因是什么?

时间:2009-07-18 18:26:15

标签: asp.net iis iis-6 asp.net-2.0

我已经在服务器故障上问过这个但是无济于事。所以我希望另一个ASP.Net开发人员遇到我的问题。

我有运行II6的Windows VPS,我正在将ASP.Net应用程序迁移到服务器。当我导航到其中一个应用程序时,大约需要2分钟才能完成任何操作。我创建了一个hello world应用程序并将其上传,并且第一次加载需要2分钟。如果我重新启动应用程序池,我会得到完全相同的问题。

一个应用程序在该应用程序池中成功加载后,任何与其他应用程序共享应用程序池的应用程序都将正常工作。

即。 bob.example.com和jane.example.com位于名为ABC1的应用程序池中。如果我访问bob,则需要2-3分钟才能加载。在鲍勃加载后,简将立即工作,鲍勃将立即工作。闲置5-10分钟后,或者如果我重新启动应用程序池,完全相同的过程再次发生。在bob和jane工作正常的时候,如果加载了应用程序池XYZ9中的dave.example.com,我必须等待2-3分钟才能加载。

有没有人遇到过这个问题?我目前处于绝对的恐慌模式,因为我需要在周末结束时将这些迁移。

哦,这些网站立即在旧服务器上运行。唯一的区别是旧服务器是32位,新服务器是64位。

9 个答案:

答案 0 :(得分:2)

你说启动需要两分钟。系统在那段时间做了什么?特别是,w3wp.exe在做什么?

我建议你运行SysInternals' Process Monitor来了解一下发生了什么。需要一段时间来提出一个有用的过滤器,但它应该是值得的。

特别是,此工具的最新版本可以为您提供有关您正在观看的进程进行网络呼叫的信息,如果证明您遇到证书,代理服务器或两者都有问题,这将是一件好事。

答案 1 :(得分:2)

如果您请求普通的.htm文件,会发生什么情况,而不是请求.aspx文件?区别在于HTML文件不通过ASP.NET,所以如果你仍然遇到缓慢的问题,你就会知道它更像是一个IIS而不是ASP.NET的东西。

虽然不是答案,但这是解决问题的一步。

答案 2 :(得分:2)

在共享虚拟主机(VPS)上,我发现磁盘访问速度非常慢,并且每天都会发生变化。当应用程序池旋转时,进程必须从磁盘加载,并且(可能)需要加载.Net框架。

(我问了一个类似的问题here。)

真的,我的虚拟主机有时非常慢,所以我相信2分钟可以归因于磁盘I / O速度。如果您的虚拟服务器RAM较少,则会更糟。

我使用服务器监控服务每30分钟点击一次URL。这有助于保持应用程序加载。 ASP.net 4.0有一些features,它们可以提供帮助。

答案 3 :(得分:1)

我禁用了回收并修复了所有问题......是的。一旦它被装载,一旦它被永久加载。仍然没有解决潜在的问题,但1and1拒绝帮助解决IIS的问题。

答案 4 :(得分:0)

可能是服务器可能在验证签名的程序集证书吊销链列表时遇到问题。您可以禁用CRL检查并查看它是否表现更好。

<强>更新

要禁用证书吊销列表(CRL)检查:

  • 打开Internet Explorer
  • 转到工具 - &gt;互联网选项......
  • 转到“高级”标签
  • 找到“安全性”部分,取消选中“检查发布者的证书吊销选项”。

这会对整个服务器全局禁用CRL检查,并且具有禁用authenticode CRL检查(即ASP应用程序池检查)的副作用。我不知道有任何细粒度的方法。此外,我不知道是否必须单独为x86版本的IE(适用于32位应用程序)和x64版本的IE(适用于64位应用程序)进行此操作。

答案 5 :(得分:0)

这可能只是初始appdomain编译启动成本,但因为您使用的是VPS而放大了。

你有什么样的规格?

答案 6 :(得分:0)

我对这个问题没有任何线索。

但是,我在某处看到/听到过 - 在这种情况下,您的请求可能会在互联网上检查域,当它应该首先在本地网络中检查(可能与DNS相关)。

这完全基于我可以回忆起人们在文章/播客上讨论的类似问题。

答案 7 :(得分:0)

您的应用程序是否与其他Web应用程序共享相同的应用程序池?换句话说,您使用的是第三方VPS并且无法控制应用池使用情况吗?如果是这样,那么其他应用程序的应用程序初始化代码可能会导致启动时间变慢。

答案 8 :(得分:0)

运行应用程序池的身份是什么?域名还是本地的?

您使用的是哪种身份验证形式?如果是匿名的,它使用的是什么帐户(域名或本地)&gt;

如果您在iisreset之后立即检查任务管理器并点击网站,是否显示w3svc正在运行,或者我们是否在等待它开始?

静态文件怎么样,例如.htm?

这就是我的全部 - 希望这会有所帮助。