3

这是我用 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客户端。这次客户端和服务器看起来都很好(完全符合预期)。

顺便说一句,在这些测试中没有报告套接字关闭。

有没有人有同样的经历?

4

0 回答 0