2015-09-04 35 views
0

我感兴趣的是正确的行为(标准明智或其他最佳实践)当Web服务器负载过大时:它应该返回错误代码,拒绝连接,超时,别的东西吗?Web服务器在重载时如何运行?

+3

据的HTTP状态代码正式登记,[503服务不可用(http://tools.ietf.org/html/rfc7231#section-6.6.4)指示,其指示“服务器是目前无法处理该请求是由于临时超载或定期维护造成的。“ – approxiblue

+0

“据”,双“表示”,对我感到羞耻两次。 – approxiblue

+0

@approxiblue:让答案和赏金是你的:)奖励点,如果你可以使它稍微更详细。 –

回答

1

最佳做法肯定是给客户的,为什么他们的要求无法处理一个明确的解释。拒绝连接或超时不知道发生了什么客户端,所以他们可能(错误地)承担任何数量的有关服务器的东西,比如服务器已经移动,服务消失了,服务器配置错误,还是真的任何可能导致拒绝的连接或超时。 503错误代码可以清楚地表明由于过载或维护服务暂时中断,并且很快会返回,因此,如果这是您的情况,那么您肯定应该返回该错误代码。

这也是为什么其他选项都比不上:

如果服务器拒绝连接,客户端可以假定服务永久不可用,或者说他们还没有正确验证(这真的应该成为一个403),但真的,被拒绝的连接可能意味着任何事情。客户端不知道服务器过载。

如果服务器超时,再次这并不能真正告诉任何东西给客户有用的。客户端可能会认为服务器无法访问,并且该服务永远不在该位置,或者可能认为该Web服务器配置不正确。再一次,客户端没有清楚地表明服务器超负荷,必须猜测。

这意味着,最好的选择是发送一个503错误。 503错误描述了客户现在无法获得服务的原因。它基本上意味着“目前服务不可用,但它很快就会来,所以再试一次”。从ietf spec

的503(服务不可用)状态代码表示该服务器 由于临时过载 或定期维护,这将有可能一些 延迟后可缓解是目前无法处理该请求。

如果您的情况,然后告诉你的客户有503错误,所以客户不必试图猜测什么拒绝连接或超时可能意味着。 HTTP状态代码是有原因的,所以请使用它们!

相关问题