2011-06-15 42 views
2

我正在玩Compute Emulator上的Azure sample from here,我發現如果我的OnStart()繼承自我的類RoleEntryPoint,返回的速度相當慢,web角色中的.aspx頁面甚至在OnStart()返回之前接受HTTP請求。爲什麼IIS在RoleEntryPoint.OnStart返回之前接受請求?

我覺得它很混亂 - 爲什麼IIS會接受對尚未開始的角色的請求?

+0

嗯,根據我的經驗,計算仿真器是Azure in-cloud行爲的一個相當鬆散的複製。所以這個怪癖確實意味着你將在雲端體驗到同樣的感受。 – 2011-06-15 11:43:07

+0

實際上,我在部署時遇到同樣的問題(即角色接受實例仍處於繁忙狀態):http://social.msdn.microsoft.com/Forums/windowsazure/en-US/885c0b7b-c19e-4969-99c8- 9186e53f16c3/azure-cloud-service-internal-server-error-500-while-scaling-up?forum = windowsazuretroubleshooting – Piedone 2014-03-20 11:34:21

回答

7

模擬器不會模擬負載均衡器100%。對於雲計算,當您的角色處於OnStart()時,您將向LB報告爲繁忙,並且沒有流量會被路由到它。一旦你從OnStart()返回true,它將需要幾秒鐘左右的時間,但只有這樣LB纔會開始路由到它。你可以通過跟蹤OnStart()並在其中放置一個大的Sleep()來測試它。您將無法訪問您的實例(通過非延時端口)。

當然,您可以讓LB忽略Ready狀態,即使在忙時也會路由 - 即通過在端點上指定ignoreRoleInstanceStatus =「true」來完成。

+0

是否有任何其他影響讓'ignoreRoleInstanceStatus = true'? – 2011-06-16 13:24:37

+0

如果你在端口80上這樣做了,這將意味着用戶將在你的web實例準備好之前就擊中你的web實例,並且他們將從IIS(503或其他)發送錯誤。對於不一定與角色狀態相關的端口(例如RDP 3389)更有意義。 – dunnry 2011-06-16 13:41:43

+0

謝謝!說得通 – 2011-06-16 13:43:06

相關問題