这是我用 Nodejs 编写的压力测试代码,试图让服务器接管 30000+ 并发连接。
服务器:
var net = require('net');
var clients = 0;
net.createServer(function (sock) {
++clients;
console.log('CONNECTED: ' + sock.remoteAddress + ':' + sock.remotePort + ', now online: ' + clients);
sock.on('close', function () {
--clients;
console.log('CLOSED, now online: ' + clients);
});
}).listen(7000);
客户:
var net = require('net');
var clients = 0;
for (idx = 0; idx < 30000; ++idx) {
var client = new net.Socket();
client.connect(7000, 'localhost', function () {
console.log('connected ' + (++clients));
});
client.on('close', function () {
console.log('Connection closed');
});
}
运行时,客户端的输出看起来很正常,数量一直上升到30000。但对于服务器端,数量最多上升到10000+左右。
所以我用C语言写了一个传统的tcp客户端。这次客户端和服务器看起来都很好(完全符合预期)。
顺便说一句,在这些测试中没有报告套接字关闭。
有没有人有同样的经历?