2012-05-25 127 views
2

讓我們設想一個Web服務器處理請求的流水線,並且由於某種原因它們失敗。服務器在什麼情況下可以保持連接,並在什麼情況下關閉它? 顯然,可以在不關閉連接的情況下處理403和404等錯誤。最有可能的是,如果響應的一部分已經發送,錯誤會導致連接關閉。HTTP流水線和錯誤處理

但是,「正常的」5xx錯誤呢?流行的Web服務器實現是傾向於保留管道還是關閉它們?

所有信息非常感謝。

回答

0

我認爲一般情況下連接不會因5xx錯誤而關閉,因爲它們是特定於請求而不是連接的,所以對同一連接的不同請求可能針對另一個資源。

只有在存在不能保持開放的原因(例如NTLM身份驗證失敗(401)(例如取決於連接))時才應關閉連接。由於所有其他原因,連接應該保持開放狀態,因爲請求是獨立的,並且HTTP確實沒有連接語義。

但是,我不知道流行的web服務器實現是做什麼的。如果你可以解釋更多的問題,你試圖解決的問題(爲什麼你關心連接是否關閉),那麼也許我們可以提供更多的信息。

+0

內存不足的情況呢?我正在實施一個HTTP服務器,如果其他人在這種情況下不跳出褲子,我們將很樂意節省一些時間。 – Krit

+0

如果您正在實施服務器,並且無論出於何種原因導致服務器無法全局繼續,那麼您肯定可以關閉連接。 –

+2

一般來說,作爲一個服務器,如果你希望客戶應該能夠做到正確的事情,你總是可以關閉連接。 –