如何阻止node.js进行未来的连接?

时间:2015-08-05 20:46:13

标签: node.js http

我希望执行以下操作:在负载下,当达到某个阈值时,禁止将来的连接,等待服务器处理所有现有连接,重置服务器,并允许将来的连接。我认为设置http.maxSockets = 0或http.maxConnections = 0会让我不接受连接,但似乎并非如此。

node.js(或express.js)中是否有办法禁止将来连接?

1 个答案:

答案 0 :(得分:1)

查看Node _http_agent.js的代码,看起来如果maxSockets的值设置为0,则会使用默认值。

我会假设,因为你说过#34;或express.js"您已经在使用Express.js中间件了。对于这些解决方案,仅限节点的替代方案非常简单。

解决方案1 ​​

您可以将maxConnections设置为连接阈值:

var app = require('express');
var server = app.listen(80);    //Set up server using whichever port you want
server.maxConnections = thresholdConnections;

服务器现在会在达到阈值时自动拒绝连接。它的优点是它会自动发生,缺点是你似乎想在完全听取新的请求之前完全处理所有请求。

解决方案2

另一种解决方案是关闭您的服务器。你可以这样做:

var app = require('express');
var server = app.listen(3000);    //Set up server using whichever port you want

稍后,当您检测到已达到连接阈值后,只需致电server.close()

处理完所有请求并发送回复后,您可以按照最初启动服务器的方式(即app.listen(3000))再次开始侦听更多请求。

相关问题