當請求的操作導致數據庫死鎖時,服務器返回503 ("Service Unavailable")
是否合適?爲了響應數據庫死鎖,返回HTTP 503是否合適?
這裏是我的推理:
- 起初我試圖避免數據庫死鎖,但我碰到https://stackoverflow.com/a/112256/14731
- 跑到旁邊,我想重複在服務器端的請求,但我碰到Java Servlets: How to repeat an HTTP request?跑。從技術上講,我可以緩衝請求實體,但可擴展性將受到影響,客戶無論如何都更有可能看到
503 Service Unavailable
。
眼見爲:
- 它更容易讓客戶重複操作。
- 無論如何他們需要能夠處理
503 Service Unavailable
。 - 數據庫死鎖相當罕見。
我傾向於這個解決方案。你怎麼看?
UPDATE:我認爲如果您願意,返回503 ("Service Unavailable")
仍然可以接受,但我不再認爲這是技術上的要求。見https://stackoverflow.com/a/17960047/14731。
即使您在生產環境中對此進行編程,您仍可能會以超時結束,這會導致您的負載平衡代理向客戶端發送504。 –
@agilevic,你是什麼意思?你是否說我需要確保按超時配置死鎖,以便使用較小的超時值來避免「HTTP 504」? – Gili
數據庫死鎖的持續時間可能比負載均衡器的超時長,從而阻止響應。如果您能夠在超時之前檢測到死鎖,則可以使用503響應客戶端 - 一個明智的選擇。 –