我有一个相当大的网站(约75k LoC),在Azure上部署了两台D2 v2机器(7GiB RAM,2个VCPU)。
当我进行新的构建时,我观察到:
- 1个CPU将达到100%
- 这最多持续两分钟
- 然后
Application_Start
被激发
我正在努力缩短从我发布到Application_Start
被解雇的时间,因为我们定期发布,这确实给网站上的访问者带来了一些痛苦。
发布网站包括:
- 发布到文件夹(
File System
发布方法) - 配置
Release
- 删除选中的所有现有文件
- 已检查发布期间的预编译
- 已检查从App_Data文件夹中排除文件
- 在高级预编译设置中,除了合并选项中的
Do not merge
之外,不检查或选择任何内容 - 压缩已发布的文件夹,上传到虚拟机并解压缩覆盖现有文件(只需几秒钟)
我的问题是:
- 初始滞留是否在正常范围内,或者我能做些什么来衡量它的作用吗
- 有什么设置我可以更改以提高到达
Application_Start
事件的时间吗
您看到的是IIS正在启动应用程序池,这通常需要一段时间,尤其是在站点很大的情况下。启动时间主要受到硬件的限制,因为您看到其中一个CPU内核达到100%,这是您的瓶颈。
由于您有两个web服务器,处理此问题的最佳方法是部署到一个服务器,然后等待它重新联机,然后再部署第二个服务器。在部署后发送预热请求将确保IIS尽快启动。