我有一个家庭作业,http
只使用节点本机模块构建服务器。我试图保护服务器免于过载,因此每个请求都被散列并存储。如果某个请求达到很高的数字,比如 500,我调用socket.destroy()
.
每个间隔(一分钟)我重新启动哈希表。问题是当我做一个以前死掉的套接字现在又可以工作了。每个间隔我唯一做的就是requests = {}
,与连接无关。
任何想法为什么连接再次生效?有比 更好的功能destroy()
吗?
谢谢
我有一个家庭作业,http
只使用节点本机模块构建服务器。我试图保护服务器免于过载,因此每个请求都被散列并存储。如果某个请求达到很高的数字,比如 500,我调用socket.destroy()
.
每个间隔(一分钟)我重新启动哈希表。问题是当我做一个以前死掉的套接字现在又可以工作了。每个间隔我唯一做的就是requests = {}
,与连接无关。
任何想法为什么连接再次生效?有比 更好的功能destroy()
吗?
谢谢
销毁套接字不一定会阻止客户端使用新套接字重试请求。
相反,您可以尝试仅使用非OK
状态代码进行最低限度的响应:
if (requests[path] >= 500) {
res.statusCode = 503;
res.end();
}
并且,在503
状态码上:
由于服务器临时过载或维护,服务器当前无法处理请求。