我的工作在Windows Azure雲服務。第一次當我點擊登錄按鈕時,需要6到7秒,但在某些時候,當我點擊相同的登錄按鈕時,需要2秒。我無法理解爲什麼發生這種情況,儘管服務器端代碼對於兩個處理都是相同的,但隨後的調用比第一次調用更安靜。在Windows Azure雲應用程序中,第一次服務器調用比後續調用需要更多時間?
0
A
回答
5
「首發命中」的延遲是非常普遍的ASP.NET應用程序。有JIT編譯的開銷,並且可能不會初始化各種「池」(數據庫連接,線程等)。如果您有ASP.NET Web窗體應用程序,則每個.aspx頁面在首次訪問時編譯,而不是在服務器啓動時編譯。此外,使後續請求更快的各種緩存機制(服務器或客戶端)在第一次命中時不會被初始化。在第一次命中時,Application_Start中的任何代碼都將運行,設置路由表並執行其他初始化。
有可以做,以防止你的用戶看到此延遲各種各樣的事情。最簡單的方法是編寫某種自動化流程,在部署新版本後觸及每個頁面並運行它。當網站實際部署時,還有一些IIS模塊會在Application_Start之前運行代碼。 Search for "ASP.NET warmup"找到那些。
您也可能會遇到一個閒置一段時間後延遲,如果你的ASP.NET應用程序池被回收, - 這重置了一堆東西,並導致啓動代碼,再次對下一個請求運行。您可以通過設置一些在網站上經常ping一個頁面,這樣,如果應用程序池被回收,再次自動加熱,而不是對下一個實際用戶請求減輕這種影響。使用正常運行時間監視服務將適用於此,或Azure生態系統本身內的預定任務。
相關問題
- 1. 第一次調用WCF服務需要花費非常多的時間嗎?
- 2. office.js ExecuteFunction在第一次調用後需要很長時間才能調用
- 3. 爲什麼第一次調用Matlab DLL花費的時間比後續調用要長得多?
- 4. 使用com.google.gms.google服務首次啓動應用程序時,Android應用程序需要更多時間啓動
- 5. 調試應用程序與使用電線進行調試相比,無線調試需要更多時間
- 6. 桌面應用程序需要服務器端調試
- 7. 爲什麼來自服務器的第一個Firebase調用需要比後續調用更長的時間才能返回?
- 8. EntityContext.SaveChange()需要較長的時間,在第一次調用
- 9. 首次調用擴展方法比後續調用要慢
- 10. 使用Windows Azure雲服務使移動和Web應用程序
- 11. 我應該在每次需要此服務時調用getSystemService一次嗎?
- 12. WPF應用程序在第一次WCF調用時死機
- 13. CSS圖像疊加需要多次調用服務器?
- 14. 啓動時和第一次啓動應用程序時調度服務
- 15. 在調試模式下啓動應用程序第一次需要很多時間
- 16. 從Windows Azure調度程序調用asmx Web服務
- 17. 對WCF服務的多個並行調用需要比單個調用更長的時間
- 18. 異步WCF調用需要更多時間然後同步調用
- 19. 第一次加載應用程序需要太多的時間,Android的
- 20. KitKat比Froyo在第一次調用時對TextToSpeech.speak()的反應要多6秒
- 21. 從雲Azure應用程序連接到Oracle服務器
- 22. 在Azure服務器中每天自動調用一次API
- 23. 僅在第一次打開應用程序時需要密碼
- 24. Windows Azure虛擬機和雲服務nodejs應用程序部署
- 25. 谷歌應用程序腳本服務調用次數太多
- 26. 第一次使用這個模擬器需要多長時間?
- 27. 使用Azure雲服務構建多服務企業應用程序
- 28. windows服務應用程序的azure webapp
- 29. 遠程調試Azure雲服務
- 30. 在Windows應用程序中調用WCF Web服務