ASP.Net应用程序运行在第一次
我用C#写的ASP.Net 3.0 Web应用程序缓慢,生产机器是Windows Server 2003与IIS 6.0和SQL Server 2005ASP.Net应用程序运行在第一次
应用程序结构
下面显示我的ASP.net web应用程序的结构:在IIS(//本地主机/ ES)包括公共的页面,例如
根应用:主页,主题,用户控制,图像文件夹。 根应用程序下的子项目数量(// localhost/es/sub-project)。 在子项目中删除web.config 子项目的汇编文件在根应用程序的bin文件夹下(子项目属性>>编译>>编译输出路径:.. \ bin \ 我的应用程序是一个3层Web应用程序(长度相关层,数据层和表示层。另外,每一个aspx页面具有其背后CS文件代码)
IIS设置
应用池 回收工作进程 空闲后“1740(分钟)”在空闲后超时工作进程“20分钟” Ping工作进程每“30秒”对于工人processer“90秒”为工人processer Shoutdown时间限制“90秒”
应用程序配置
缓存有限的ASP内存中的文件 启动时间限制“500”
缓存有限的ASP磁盘上的文件“2000”
部署应用:
我公布其所有的文件到生产服务的Web应用程序河
问题:
应用程序运行在第一时间相当缓慢,需要向上10秒加载,但每次在一个页面被请求它的速度更快的下一次。我相信,在第一次请求页面时,它会进行编译,并且通常比其他请求需要更多时间,因为该页面位于高速缓存存储器中。 这里的问题是为什么在第一次编译页面时需要花费时间?
尝试解决问题:
我试着做到以下几点:
- 部署所需的文件的副本给生产服务器。
- 更改IIS设置,改变了关闭工作进程
- 关闭跟踪
- 关闭会话状态
- 禁用视图状态页面
- 设置调试=在网络虚假下来空闲超时。config
- 在根应用程序下创建hello world子项目需要5秒。
- 创建单独的hello word Web应用程序,如上所述需要很长时间才能加载。
- 删除page_load事件处理程序中的代码,但它不影响性能。
- 只发布根应用程序所需要的文件(没有写在后面的代码的代码),并在分项目的源代码的所有文件(代码在后面的代码),
然而,应用程序仍然开始缓慢,但后来它变得更快。
请帮助诊断和解决此问题。
有没有办法解决这个问题。网站编译时,您首次加载时总是会稍微延迟。
发布预编译的网站,而不是复制它。
您正在经历的行为是正常现象。
除了上面说的什么之外,您还可以运行“热身脚本”作为部署过程的最后一步。虽然这不会加快第一次编译所需的时间,但使用这样的脚本至少可以防止用户看到启动缓慢。 这里看一看这样的脚本的例子: http://programmerramblings.blogspot.com/2008/09/aspnet-site-warmup.html
另一个原因是您的应用程序非常第一个请求是缓慢可能是因为IIS有第一个请求期间启动asp.net工作进程。但是,这应该不会影响对其他页面的首次请求。
自动启动Web应用程序是伟大的解决第一次页面的性能最大的缺点是负载 但应用程序不会关闭。 我的应用程序包含很多页面,如果我使用“自动启动”或“预热”会影响内存吗? 剂量预热会对服务器性能产生负面影响吗? 使用“热身脚本”有什么不利吗? – Zahraa 2010-02-09 10:07:20
VBscript + Dos Batch file... run every 1 hr
Dim strNewTime , strSiteName
strNewTime = Now()
strNewTime = Replace(strNewTime, "/","")
strNewTime = Replace(strNewTime, " ","")
strNewTime = Replace(strNewTime, ":","")
strSiteName = "https://www.yoursite.com/userlogin.aspx?dummytime=" + strNewTime
Dim oXMLHTTP
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
oXMLHTTP.Open "GET", strSiteName, False
oXMLHTTP.Send
If oXMLHTTP.Status = 200 Then
' working
ELSE
CALL SendEmail("!!! www - web site is NOT working... " + strSiteName + " *** ")
End If
Set oXMLHTTP = Nothing
请添加评论以描述您的答案如何解决问题。 – Chrismas007 2014-12-01 17:28:08
总是会有任何.NET应用程序的第一次加载轻微的延迟是由于.NET框架平台CLR组件。因为JIT(准时)位于内CLR(运行环境ASP.NET)中间语言(IL)转换为机器码,它总是会稍微长一点的第一个执行的.NET应用程序。
https://www.youtube.com/watch?v=ruf4U9_Rbss&index=1&list=PL8598C97BA1D871C1
希望它能帮助:
关于这个问题的详细视频可以观看。
有关IIS 7.0和较小的版本上运行或asp.net应用程序,编写程序热身脚本是为了防止应用程序池空闲超时一个最好的办法。 这种热身触发器可以从同一个应用程序或从外部网站或程序设置。 你可以找到不同的方法来达到同样在这个article
http://stackoverflow.com/questions/13386471/fixing-slow-initial-load-for-iis – 2013-11-26 02:40:31