2015-12-21 100 views
0

我在Azure的雲服務中運行Web Api服務。我注意到很多人都在這裏,第一次打電話給服務似乎需要永遠(差不多1分鐘),隨後的電話很正常。我環顧四周,就約了幾個決議,一個是加入啓動腳本部署Cloud Service Always On不工作

REM *** Prevent the IIS app pools from shutting down due to being idle. 
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00 

REM *** Prevent IIS app pool recycles from recycling on the default schedule of 1740 minutes (29 hours). 
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.time:00:00:00 

的角色啓動以及應用程序池的啓動模式屬性設置爲AlwaysOn雜誌。在做出這些更改後,我仍然會在最初部署Cloud Service並觸及Web服務時看到延遲問題。那麼這裏會發生什麼?在啓動Cloud Service時是否需要編寫腳本來「預熱」Web服務?

回答

1

我有一個類似的問題,Isaac,並且正如您所建議的那樣,在新部署(自動化)之後向API添加了幾個調用,以便生產用戶不會遇到延遲。

我也很好奇,如果有更好的方法。

+0

你是怎麼做到的? Azure Jobs?一個在啓動時運行的ping命令?我很好奇什麼是做這件事的最好方法。 –

+0

在我們的場景中,我們的DevOps流程(使部署和構建自動化)使我們能夠在部署成功結束時運行應用程序(Visual Studio版本管理)作爲定義的步驟。我們只是構建了一個在加載時運行AJAX調用的應用程序。 – DanielG

+0

夠公平的,我可以看看類似的東西。謝謝你的提示。我不打算將你的答案標記爲決議,因爲我有興趣看到其他人的答覆。 –

0

您可以使用暫存環境進行零宕機部署。將您的應用部署到臨時插槽並在那裏預熱。當你準備好時,只需交換。 Azure將消耗當前的連接並順利地改變端點。 Check this.

+0

但是你仍然需要正確地預熱應用程序?所以練習是一樣的,除了你減少生產槽的延遲。我跟隨? –

+0

無論您何時部署新代碼,應用程序池都會回收,但無法防止此問題。無論您是在生產環境還是臨時插槽部署,新應用程序都需要一段時間才能啓動。 –

0

我使用Azure調度程序作業,每5分鐘在我的網址上執行GET操作。無論您經常需要,您都可以安排它。它也默認啓用自動重試,並且您也可以爲失敗創建操作。