正如其他各种相关问题中所述,我还期待在重新部署带有相当大EF6模型的Web角色以及大量参考的nuget之后首次调用持续(30秒) -packages。在尝试使用preloadEnabled
和serviceAutoStartProviders
的不同建议解决方案后,我仍然很满意并决定重新开放此主题,希望有人在此期间找到更好的解决方案。部署后Azure Web角色预热
对于我来说,主要目标是在角色在新部署中退出忙碌状态并可通过负载平衡器和外部客户端访问时,使Web角色以接近后续调用的速度回应第一个请求。不幸的是我经历了以下问题,目前提出的解决方案:
preloadEnabled
:- 我通过
PKGMGR.EXE /iu:IIS-ApplicationInit
在启动任务添加应用程序初始化模块。到现在为止还挺好。 - 当我然后尝试执行
%windir%\system32\inetsrv\appcmd set site "MySiteName" -applicationDefaults.preloadEnabled:true
时,它在执行启动脚本时失败,在全新部署中仍然没有在IIS中创建网站。 - 如果我尝试通过我的
Application_Start
方法中的ServerManager
-class设置preloadEnabled设置,我不明白,在对web角色进行第一次外部调用之前如何执行此代码作为preloadEnabled设置在新的web角色部署后默认为false,因此我理解的Application_Start方法没有机会被Application Initialization模块执行?
- 我通过
serviceAutostartProviders
:- 这里我们需要把我们的实施中对ApplicationHost.config的
IProcessHostPreloadClient
接口通过使用APPCMD脚本或ServerManager的类,即AutostartProvider的名字,但:- serviceAutostartProvider就像preloadEnabled一个网站相关的设置,所以我们在这里有1.237中的
%windir%\system32\inetsrv\appcmd set site "MySiteName" -applicationDefaults.preloadEnabled:true
相同的问题 - 在全新部署后的启动脚本执行时,网站没有t尚未在IIS中创建并且脚本无法正常执行 - 另一种可能性是将applicationhost.config包含到部署包中,但我没有找到任何解决方案来为Web角色执行此操作。
- serviceAutostartProvider就像preloadEnabled一个网站相关的设置,所以我们在这里有1.237中的
- 这里我们需要把我们的实施中对ApplicationHost.config的
那么怎么你们管理,以确保,即预加载组件和一些初始化代码(如填充内存高速缓存)被之前运行作用得到它的第一次从外线命中?
我们现在开始获得一些流量并获得约。我们的WebApi上每秒发出1-2个请求,因此,每次更新部署之后,客户端预加载“可见”的时间延迟30秒,现在已成为主要问题。
我们在低流量时间调度更新部署,但如果我需要进行紧急修补程序部署,该怎么办?
谢谢热身实例的代码。但您的解决方案是否也适用于Web角色?据我所知,它只是一个Azure Web Apps的功能? – maxyha