我感興趣的是正確的行爲(標準明智或其他最佳實踐)當Web服務器負載過大時:它應該返回錯誤代碼,拒絕連接,超時,別的東西嗎?Web服務器在重載時如何運行?
0
A
回答
1
最佳做法肯定是給客戶的,爲什麼他們的要求無法處理一個明確的解釋。拒絕連接或超時不知道發生了什麼客戶端,所以他們可能(錯誤地)承擔任何數量的有關服務器的東西,比如服務器已經移動,服務消失了,服務器配置錯誤,還是真的任何可能導致拒絕的連接或超時。 503錯誤代碼可以清楚地表明由於過載或維護服務暫時中斷,並且很快會返回,因此,如果這是您的情況,那麼您肯定應該返回該錯誤代碼。
這也是爲什麼其他選項都比不上:
如果服務器拒絕連接,客戶端可以假定服務永久不可用,或者說他們還沒有正確驗證(這真的應該成爲一個403),但真的,被拒絕的連接可能意味着任何事情。客戶端不知道服務器過載。
如果服務器超時,再次這並不能真正告訴任何東西給客戶有用的。客戶端可能會認爲服務器無法訪問,並且該服務永遠不在該位置,或者可能認爲該Web服務器配置不正確。再一次,客戶端沒有清楚地表明服務器超負荷,必須猜測。
這意味着,最好的選擇是發送一個503錯誤。 503錯誤描述了客戶現在無法獲得服務的原因。它基本上意味着「目前服務不可用,但它很快就會來,所以再試一次」。從ietf spec:
的503(服務不可用)狀態代碼表示該服務器 由於臨時過載 或定期維護,這將有可能一些 延遲後可緩解是目前無法處理該請求。
如果您的情況,然後告訴你的客戶有503錯誤,所以客戶不必試圖猜測什麼拒絕連接或超時可能意味着。 HTTP狀態代碼是有原因的,所以請使用它們!
相關問題
- 1. 如何在服務器更改數據庫時重新運行加載程序
- 2. Web Sphere Web服務運行時實現
- 3. 在Web服務器上運行geotools?
- 4. 在web服務器上運行gdb
- 5. 在運行時訪問SharePoint Web服務
- 6. 在運行時更改Web服務URL
- 7. 在運行時更新web服務
- 8. 如何在運行時獲取組裝路徑,在web服務器,服務或win應用程序中運行
- 9. 如何讓服務運行定時器?
- 10. 如何通過SSH在遠程服務器上運行Web服務器腳本?
- 11. 如何讓Sonar Runner在源服務器上運行時運行?
- 12. 如何在web服務器上運行python腳本(例如localhost)
- 13. 長時間運行Asyncio服務器,重新加載證書
- 14. Docker容器可以在實時Web服務器上運行嗎?
- 15. 如何在https:to javascript下運行.Net Web服務服務?
- 16. 如何在Apache Web服務器上運行ASP.NET應用程序?
- 17. 如何在Web服務器上運行python3?
- 18. 如何在Web服務器上運行VS 2012的MVC 4?
- 19. 如何在Web服務器上運行python腳本?
- 20. 如何在我的Web服務器上運行Python CGI腳本?
- 21. 如何在球拍web服務器上運行多個servlet?
- 22. 如何推斷站點正在運行的Web服務器?
- 23. 你如何在本地運行Tornado web服務器?
- 24. 如何在web服務器的php中運行keytool和jarasigner
- 25. 如何在Google App Engine中運行CherryPy web服務器
- 26. 如何在我的Web服務器上運行Python腳本?
- 27. 如何在Web服務器上使用Webpack運行Vue cli?
- 28. 如何讓Django在我的Web服務器上運行?
- 29. 如何在Linux Web服務器上運行Phantomjs
- 30. 如何連接從c#在Web服務器上運行的MySQL?
據的HTTP狀態代碼正式登記,[503服務不可用(http://tools.ietf.org/html/rfc7231#section-6.6.4)指示,其指示「服務器是目前無法處理該請求是由於臨時超載或定期維護造成的。「 – approxiblue
「據」,雙「表示」,對我感到羞恥兩次。 – approxiblue
@approxiblue:讓答案和賞金是你的:)獎勵點,如果你可以使它稍微更詳細。 –