1

我有一个家庭作业,http只使用节点本机模块构建服务器。我试图保护服务器免于过载,因此每个请求都被散列并存储。如果某个请求达到很高的数字,比如 500,我调用socket.destroy().

每个间隔(一分钟)我重新启动哈希表。问题是当我做一个以前死掉的套接字现在又可以工作了。每个间隔我唯一做的就是requests = {},与连接无关。

任何想法为什么连接再次生效?有比 更好的功能destroy()吗?

谢谢

4

1 回答 1

1

销毁套接字不一定会阻止客户端使用新套接字重试请求。

相反,您可以尝试仅使用非OK状态代码进行最低限度的响应:

if (requests[path] >= 500) {
    res.statusCode = 503;
    res.end();
}

并且,在503状态码上:

由于服务器临时过载或维护,服务器当前无法处理请求。

于 2012-12-16T22:37:03.533 回答