我有一个使用 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 子项目的 assemble 文件位于根应用程序的 bin 文件夹下(子项目属性 >> 编译 >> 构建输出路径:..\bin\ 我的应用程序是一个 3 层 Web 应用程序(偏差层,数据层和表示层。此外,每个aspx页面都有其cs文件后面的代码)
IIS 设置
Application pool Recycling Worker Process after "1740 in minutes" 空闲后的空闲超时工作进程 "20 in minutes" Ping 工作进程每 "30 秒"
工作进程的启动时间限制 "90 秒" 工作进程的停机时间限制 "90 秒"
应用程序配置
在内存“500”中缓存有限的 ASP 文件
在磁盘“2000”上缓存有限的 ASP 文件
部署应用程序:
我将 Web 应用程序及其所有文件发布到生产服务器。
问题 :
该应用程序在第一次运行时非常慢,加载需要 10 秒以上,但是每次下一次请求页面时它会更快。我相信第一次请求页面时,它会编译并且通常比其他请求花费更多时间,因为该页面位于缓存内存中。这里的问题是为什么第一次编译页面需要时间?
尝试解决问题:
我尝试执行以下操作:
- 将所需文件的副本部署到生产服务器。
- 更改了 IIS 设置,更改了工作进程的空闲超时关闭
- 关闭跟踪
- 关闭会话状态
- 禁用页面的视图状态
- 在 web.config 中设置 debug=false
- 在根应用下创建一个hello world子项目,耗时5秒。
- 创建单独的 hello word web 应用程序,如上所述需要很长时间才能加载。
- 删除 page_load 事件处理程序中的代码,但不影响性能。
- 只发布根应用需要的文件(后面代码中没有写代码),以及子项目源代码中的所有文件(代码在后面的代码中),
但是,应用程序仍然启动缓慢,但随后变得更快。
请帮助诊断和解决这个问题。