我想确定这个基准测试是否公平。目标是尝试查看Node.JS可以处理多少个并发连接与各种大小的有效负载。以下是代码。
var express = require('express');
var Sequelize = require('sequelize');
var fs = require('fs');
var app = express();
var data;
var filename = process.argv[2] || './start.json';
console.log("Using: " + filename);
data = fs.readFileSync(filename);
var blockSize = 250000;
app.get('/start', function (req, res) {
// Break up data in blocks. Works to super high concurrents.
// for(var i = 0; i < data.length; i+=blockSize)
// res.write(data.slice(i, i+blockSize));
// Can only handle about 600 concurrent requests if datasize > 500KB
res.send(data);
});
app.listen(3000, function () {
console.log('Listing on 3000.');
});
根据评论所述,如果负载大小大于约500KB并且有500个并发,则在负载测试客户端处会出现“对等方重置连接”的情况。如果您将数据切片并以块写入,则可以在启动此行为之前支持更高的并发。Node和Express都表现出这种行为。