我需要在 node.js 中构建一个 REST API,并且正在寻找一个比 express.js 更轻量级的框架,它可能会避免不需要的功能,并且就像一个用于构建 REST API 的定制框架。Restify from its intro 推荐用于相同的情况。
阅读为什么使用restify而不是express?似乎restify是一个不错的选择。
但是当我用负载尝试两者时,惊喜来了。
我在 Restify 上制作了一个示例 REST API,每秒发送 1000 个请求。令我惊讶的是,这条路线在一段时间后开始没有响应。基于 express.js 构建的同一个应用程序处理了所有问题。
我目前正在通过
var FnPush = setInterval(function() {
for(i=0;i<1000;i++)
SendMsg(makeMsg(i));
}, 1000);
function SendMsg(msg) {
var post_data = querystring.stringify(msg);
var post_options = {
host: target.host,
port: target.port,
path: target.path,
agent: false,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': post_data.length,
"connection": "close"
}
};
var post_req = http.request(post_options, function(res) {});
post_req.write(post_data);
post_req.on('error', function(e) {
});
post_req.end();
}
我得到的结果是否合理?如果是这样,在这种情况下 express 比 restify 更有效吗?或者我测试它们的方式有什么错误吗?
根据评论更新
重新调整的行为
当负载超过 1000 个 req.s 时,它在 1 秒内停止处理,直到 1015 个 req.s 接收,然后什么也不做。IE。我实现的用于计算传入请求的计数器在 1015 之后停止递增。
当以 100 个需求的负载喂食时。每秒它接收到 1015 并且在那之后没有响应。