【发布时间】:2011-01-14 08:16:37
【问题描述】:
我有一个使用 C# 用 ASP.Net 3.0 编写的 Web 应用程序,生产机器是带有 IIS 6.0 和 sql server 2005 的 windows server 2003。
应用结构
下面显示了我的 ASP.net Web 应用程序的结构:
IIS 中的根应用程序(//localhost/es)包括常用页面,例如:母版页、主题、用户控件、图像文件夹。 根应用程序下的子项目数(//localhost/es/sub-project)。 删除子项目中的 web.config 子项目的汇编文件在根应用程序的bin文件夹下(子项目属性>>编译>>构建输出路径:..\bin\ 我的应用程序是一个 3 层 Web 应用程序(偏差层、数据层和表示层。此外,每个 aspx 页面都有其代码在 cs 文件后面)
IIS 设置
应用程序池
“1740 in minutes”后回收工作进程
空闲“20 分钟”后空闲超时工作进程
每“30 秒”Ping 工作进程
工作处理器“90 秒”的启动时间限制
工作处理器“90 秒”的关闭时间限制
应用程序配置
在内存“500”中缓存有限的 ASP 文件
在磁盘“2000”上缓存有限的 ASP 文件
部署应用程序:
我将 Web 应用程序及其所有文件发布到生产服务器。
问题:
该应用程序在第一次运行时非常慢,加载需要 10 秒以上,但是在下次请求页面时它会更快。我相信第一次请求页面时,它会编译并且通常比其他请求花费更多时间, 因为页面在缓存内存中。 这里的问题是为什么第一次编译页面需要时间?
解决问题的尝试:
我尝试执行以下操作:
- 将所需文件的副本部署到生产服务器。
- 更改了 IIS 设置,更改了工作进程的空闲超时关闭
- 关闭跟踪
- 关闭会话状态
- 禁用页面的视图状态
- 在 web.config 中设置 debug=false
- 在根应用下创建一个hello world子项目,耗时5秒。
- 创建单独的 hello word web 应用程序,如上所述需要很长时间才能加载。
- 删除 page_load 事件处理程序中的代码,但不影响性能。
- 只发布根应用需要的文件(后面代码中没有写代码),子项目源代码中的所有文件(代码在后面的代码中),
但是,应用程序仍然启动缓慢,但随后变得更快。
请帮助诊断和解决这个问题。
【问题讨论】:
标签: iis-6 publish web-applications performance