构建不崩溃的 Node.js 服务器。
toobusy 会轮询 Node.js 事件循环,并跟踪 "延迟",即节点事件队列中等待处理的长时间请求。当延迟超过阈值时,toobusy 会告诉你自己"太忙"了。此时,你可以提前停止请求处理(而不是花太多时间处理它们,从而加剧问题),并返回"服务器太忙"的响应。这样,你的服务器在极端负载下仍能保持"响应性",并继续处理尽可能多的请求。
JavaScript var toobusy = require('toobusy'), express = require('express'); var app = express(); // 中间件,在过于繁忙时阻止请求 app.use(function(req, res, next) { if (toobusy()) { res.send(503, "我现在很忙,抱歉。"); } else { next(); } }); app.get('/', function(req, res) { // 处理请求需要一些工作! var i = 0; while (i 太阳底下没有什么新鲜事了。 (传道书 1:9) 虽然将"事件循环延迟"应用于 Node.js 并不是直接受到其他人的启发,但这个概念并不新鲜。 以下是其他人应用相同技术的参考资料:
暂无开放 Issues,或尚未同步最近议题。