这是我用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客户端。而这一次,客户和服务器看起来很好(完全符合预期)。
顺便说一下,在这些测试中没有报告套接字关闭。
有没有人有相同的经历?