ASP.NET MVC在主机上运行缓慢?

时间:2012-07-08 19:28:31

标签: asp.net asp.net-mvc performance

我已将我的ASP.NET MVC(3) site上传到我的主机,但是在首次加载所有网页时它的网站速度很慢(即使没有数据提取)?

我第一次访问startpage需要7.30 s,如果我在1分钟后点击了reaload将需要1.05 s,如果我重复点击reaload,它会在500 ms和{{{{}}之间给我1}}。

如果我在大约5分钟后返回并且点击了reaload,我将再次获得800 ms次加载?

如果我从本地主机(IIS7)运行相同的websight,我将首先获得7 s,然后1 s以便快速重新加载。

网页正在使用数据库,但在两种情况下都是相同的数据库(放在我的主机上)。

网页为www.biss.se

我应该从哪里开始看?

编辑:

这是我的Application_Start()

650 ms

4 个答案:

答案 0 :(得分:7)

当第一个请求命中ASP.NET应用程序时,Web应用程序通过创建AppDomain将此应用程序加载到内存中,并执行Application_Start中的代码。此过程可能需要更多或更少的时间,具体取决于您在此事件中执行的操作以及要加载的程序集数。在一段时间不活动或达到某些内存/ CPU阈值后,IIS可以回收应用程序并从内存中卸载它。在下一个请求中,重复相同的过程。

所以基本上你应该寻找的是你在Application_Start事件中执行的任务,这是在第一次请求时执行的。如果这些任务涉及I / O操作(如数据库访问或内容),则可以记录执行它们所需的时间。通过这种方式,您将能够确定代码的确切过程,这些过程需要很长时间,并且如果它依赖于您,则能够修复它,或者如果它们有问题,请联系您的托管服务提供商。

MiniProfiler是用于此分析目的的绝佳工具。

答案 1 :(得分:1)

您应该查看您的IIS设置。 IIS关闭所有在一段时间内未被请求命中的网站。

因此,如果没有几分钟的请求,将从内存中卸载站点并需要

这就是你在本地和远程机器上有不同行为的原因。 有些时候主机会阻止此设置,原因是一台虚拟机上的客户端内存使用率很低。

我无法回想起要更改的设置。有人应该给出更确定的答案。

答案 2 :(得分:0)

与在IIS8 Windows2012服务器上运行的ASP.MVC3应用程序具有相同的行为。

如果您确定自己在做什么,可以配置IIS以使您的应用池保持活跃状态​​。

可以找到解决方案here on G+

最重要的是为应用程序池配置空闲超时设置。

答案 3 :(得分:-1)

如果转到“高级设置”,“应用程序池”,则可以看到“最大工作进程数”属性,并将值设置为2,而不是1。

我以这种方式解决了我的问题。