我有一个使用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\)。
我的应用程序是一个三层Web应用程序(业务逻辑层、数据访问层和表示层),每个aspx页面都有其代码后缀cs文件。
IIS设置:
应用程序池
1740分钟后回收工作进程
20分钟后闲置的工作进程
每30秒ping一次工作进程
工作进程启动时间限制为90秒
关闭工作进程的时间限制为90秒
应用程序配置
将ASP文件在内存中的缓存限制为500
将ASP文件在磁盘上的缓存限制为2000
部署应用程序:
我将所有文件及其相关内容发布到生产服务器中。
问题:
第一次运行应用程序时,速度非常慢,需要超过10秒才能加载,但每次请求页面时,速度都会更快。我认为第一次请求页面时,它会进行编译,通常比其他请求花费更多的时间,因为页面在缓存内存中。问题是,为什么第一次编译页面需要这么长时间?
解决问题的尝试:
我尝试了以下操作:
将所需文件的副本部署到生产服务器。
更改IIS设置,更改工作进程闲置超时关闭。
关闭跟踪。
关闭会话状态。
禁用页面的视图状态。
在web.config中设置debug=false。
在根应用程序下创建一个hello world子项目,需要5秒钟。
创建单独的hello world Web应用程序,与上面相同,需要很长时间才能加载。
删除page_load事件处理程序中的代码,但对性能没有影响。
只发布根应用程序所需的文件(不在代码后台编写代码),并将所有文件发布到子项目的源代码中(代码在代码后台中编写)。
然而,应用程序仍然开始较慢,但之后会变得更快。
请帮助诊断和解决此问题。
应用程序结构:
我的ASP.net Web应用程序的结构如下:
在IIS中的根应用程序(//localhost/es)包括常见页面,例如:主页面、主题、用户控件、图像文件夹。
根应用程序下有多个子项目(//localhost/es/sub-project)。
删除子项目中的web.config文件。
将子项目的文件组装在根应用程序的bin文件夹下(子项目属性>>编译>>生成输出路径:..\bin\)。
我的应用程序是一个三层Web应用程序(业务逻辑层、数据访问层和表示层),每个aspx页面都有其代码后缀cs文件。
IIS设置:
应用程序池
1740分钟后回收工作进程
20分钟后闲置的工作进程
每30秒ping一次工作进程
工作进程启动时间限制为90秒
关闭工作进程的时间限制为90秒
应用程序配置
将ASP文件在内存中的缓存限制为500
将ASP文件在磁盘上的缓存限制为2000
部署应用程序:
我将所有文件及其相关内容发布到生产服务器中。
问题:
第一次运行应用程序时,速度非常慢,需要超过10秒才能加载,但每次请求页面时,速度都会更快。我认为第一次请求页面时,它会进行编译,通常比其他请求花费更多的时间,因为页面在缓存内存中。问题是,为什么第一次编译页面需要这么长时间?
解决问题的尝试:
我尝试了以下操作:
将所需文件的副本部署到生产服务器。
更改IIS设置,更改工作进程闲置超时关闭。
关闭跟踪。
关闭会话状态。
禁用页面的视图状态。
在web.config中设置debug=false。
在根应用程序下创建一个hello world子项目,需要5秒钟。
创建单独的hello world Web应用程序,与上面相同,需要很长时间才能加载。
删除page_load事件处理程序中的代码,但对性能没有影响。
只发布根应用程序所需的文件(不在代码后台编写代码),并将所有文件发布到子项目的源代码中(代码在代码后台中编写)。
然而,应用程序仍然开始较慢,但之后会变得更快。
请帮助诊断和解决此问题。