服务器达到连接上限时应返回的正确HTTP状态码是什么?
问题:连接数超限的HTTP服务器应返回什么状态码?
我搭建了一个监听socket连接的简易HTTP服务器,该服务器代码限制了同时可容纳的连接总数。相关代码如下:
do { new_fd = accept(lfd, NULL, NULL); nfds += 1; ... if(nfds + 1 > ntotal){ // connection limit exceeded set_headers( new_fd, /* HTTP status code here */ ); /* close socket after error had been sent */ } }while(1);
我想了解在此场景下,服务器关闭socket前应返回的HTTP状态码。
回答
你应该返回 503 Service Unavailable 状态码,这是最贴合你当前场景的标准HTTP状态码:
- 这个状态码的官方定义就是服务器暂时无法处理请求,通常是由于临时过载或维护,完美匹配你的连接数已满、暂时无法接受新连接的情况。
- 额外优化建议:你可以在响应头里加上
Retry-After字段,比如Retry-After: 15,告诉客户端15秒后可以尝试再次连接,让客户端的错误处理逻辑更合理。
在你的代码流程里,先返回这个状态码再关闭socket的做法是正确的——确保客户端收到明确的错误提示后再终止连接,避免客户端一直处于等待状态。
内容的提问来源于stack exchange,提问作者jorge is not ai
相关产品推荐
相关产品推荐

