我已将我的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
答案 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。
我以这种方式解决了我的问题。