在Webrole的RoleEntryPoint.OnStart方法中等待/睡眠是否是一種很好的做法?在告訴Azure我們已經準備好提供服務請求之前,我們希望確保我們的服務已經準備就緒。Azure WebRole OnStart方法中的等待/睡眠方法
回答
是的,您可以在OnStart方法中等待一段時間來初始化服務。
OnStart執行系統的初始化。如果您在進入角色的運行狀態之前需要設置並初始化一項服務,則需要在退出該方法之前在OnStart中初始化該服務。
角色環境將在您退出OnStart後繼續調用您的RoleEntryPoint的Run方法。調用下一個方法的確切時間是未知的。這也會將您的服務從RoleInstanceStatus.Busy移至RoleInstanceStatus.Ready,此時角色實例將開始接收流量。
據我所知,角色實例沒有初始化超時。 (另一方面,OnStop方法,當你的實例出於什麼原因關閉時,由於實際原因,執行完成的時間有限。不確定,但有一次我聽到了5秒或15秒。)
據我所知,當OnStart內部的角色狀態是Busy時,這意味着它向Fabric Controller報告它仍處於初始化階段。我認爲在OnStart中睡覺並不好或不好,但您可能需要考慮角色啓動超時。
我認爲更好的主意會把你的等待邏輯放在運行中帶有一些標誌,以便在你準備好之前它不能接受請求。
不知道爲什麼你會推薦在'Run()'中輸入人工等待語句。您可以在'OnStart()'中完成所有設置,並且在準備好添加到負載平衡器之前不要離開該方法。 – 2012-02-15 04:56:46
據我所知,將應用程序保留在OnStart將使部署狀態保持忙。我記得有一個超時的角色初始化。如果確定OnStart花費太長時間,Fabric Controller可能會報告部署失敗,我想。 – 2012-02-15 05:31:24
OnStart方法的缺點是執行其中的所有初始化。所以,在這個函數退出之後,你的實例應該是完全有效的。在你的情況下,我認爲在OnStart中稍微等一下是很好的。在此期間,角色將處於「忙碌」狀態,並且不會收到任何傳入的Web請求,但仍可以與存儲和數據庫進行通信。
在我們的項目中,我們有OnStart從Blob存儲下載所有必要的數據,解包並註冊它。然後我們檢查該角色是否健康,並且只有在離開OnStart方法之後。
- 1. 使線程等待睡眠()中的方法.net
- 2. 適當的睡眠方式在等待鎖定期間睡眠
- 3. 混淆)線程的等待和睡眠方法
- 4. Python:睡眠方法
- 5. PLSQL中的等待/睡眠
- 6. 睡眠或等待()
- 7. Azure WebRole OnStart升級部署
- 8. 睡眠/等待/暫停javascript
- 9. GWT - 睡眠\等待信號?
- 10. 等待HttpTaskAsyncHandler裏的方法
- 11. 線程中調用睡眠方法的不同方法
- 12. .NET Stopwatch是否等待/睡眠/休眠?
- 13. 等待setContentView()方法
- 14. onStart方法中的NoClassDefFoundError - Android
- 15. 讓線程睡眠的更好方法
- 16. Azure WorkerRole和WebRole跟蹤延遲OnStart?
- 17. java線程睡眠解決方案和等待同步塊
- 18. window.close()之前的等待/睡眠
- 19. 使用getTimer()方法睡眠腳本2
- 20. 使用睡眠暫停方法一秒
- 21. 延遲/睡眠呼叫方法
- 22. KERNEL32.DLL睡眠和Thread.sleep()方法
- 23. 方法睡眠,直到事件觸發
- 24. Azure WebJobs睡眠
- 25. 等待非異步方法
- 26. 異步方法並等待
- 27. FluentWait不等待elementToBeClickable()方法
- 28. 如何等待IAsyncAction方法?
- 29. 異步\等待方法
- 30. 異步/等待+ FromEvent方法
有初始化超時。微軟服務部門告訴我,角色有15分鐘才能進入就緒狀態,否則其他更新域會被更新。這意味着您的所有角色都可以一次性降下來。我們的Azure應用剛剛被發現 - 在自動Azure操作系統升級期間,工作角色需要15分鐘才能完成啓動任務(我們的問題),然後Azure開始升級其他更新域中的角色。這意味着更新域中的角色以及我們的應用程序同時處於關閉狀態。 – Yoshi 2013-03-07 20:58:03
操作系統升級的超時時間記錄在這裏http://msdn.microsoft.com/en-us/library/windowsazure/hh543978.aspx – sharptooth 2013-05-22 10:11:03