2012-05-25 122 views
2

让我们设想一个Web服务器处理请求的流水线,并且由于某种原因它们失败。服务器在什么情况下可以保持连接,并在什么情况下关闭它? 显然,可以在不关闭连接的情况下处理403和404等错误。最有可能的是,如果响应的一部分已经发送,错误会导致连接关闭。HTTP流水线和错误处理

但是,“正常的”5xx错误呢?流行的Web服务器实现是倾向于保留管道还是关闭它们?

所有信息非常感谢。

回答

0

我认为一般情况下连接不会因5xx错误而关闭,因为它们是特定于请求而不是连接的,所以对同一连接的不同请求可能针对另一个资源。

只有在存在不能保持开放的原因(例如NTLM身份验证失败(401)(例如取决于连接))时才应关闭连接。由于所有其他原因,连接应该保持开放状态,因为请求是独立的,并且HTTP确实没有连接语义。

但是,我不知道流行的web服务器实现是做什么的。如果你可以解释更多的问题,你试图解决的问题(为什么你关心连接是否关闭),那么也许我们可以提供更多的信息。

+0

内存不足的情况呢?我正在实施一个HTTP服务器,如果其他人在这种情况下不跳出裤子,我们将很乐意节省一些时间。 – Krit

+0

如果您正在实施服务器,并且无论出于何种原因导致服务器无法全局继续,那么您肯定可以关闭连接。 –

+2

一般来说,作为一个服务器,如果你希望客户应该能够做到正确的事情,你总是可以关闭连接。 –