正如其他各種相關問題中所述,我還期待在重新部署帶有相當大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