Nodejs 测试 Linux 服务器最大支持 tcp 链接数
Nodejs 测试 Linux 服务器最大支持 tcp 链接数
阿里云服务器 8g 内存的测了一下 50w 样子
最大连接数受 ulimit 最大打开文件数, 内存等限制。
https://github.com/xcstream/node1000k
3 回复
这个怎么用。。
我在正在跑的服务器运行这个
install nodejs>8
ulimit -n 1000000
npx node1000k
会把服务器搞垮吗。
先安装 nodejs 参考 http://www.bubuko.com/infodetail-1819815.html
输入
ulimit -n 1000000 回车
npx node1000k 回车
几十秒时间 内存占用增加几个 G,不能创建更多链接时候程序自动退出。
要测试Node.js在Linux服务器上最大支持的TCP连接数,首先需要了解Linux系统本身对TCP连接数的限制,其次是在Node.js层面创建并管理大量连接来逼近这个限制。以下是一个基本的测试框架和步骤:
一、Linux系统TCP连接数限制
Linux系统的TCP连接数受到多个因素的限制,包括端口范围、文件描述符数量等。可以使用以下命令查看和修改这些限制:
- 查看当前端口范围:
cat /proc/sys/net/ipv4/ip_local_port_range
- 修改端口范围(例如设置为1024到65535):
echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range
- 查看和修改文件描述符限制:
# 查看系统级文件描述符限制
cat /proc/sys/fs/file-max
# 修改系统级文件描述符限制(例如设置为2000000)
echo 2000000 > /proc/sys/fs/file-max
二、Node.js层面测试
在Node.js中,可以使用net
模块来创建TCP服务器并监听连接事件。通过不断打开新连接并监控连接数,可以逼近系统的最大TCP连接数限制。以下是一个简单的Node.js脚本示例:
const net = require('net');
const server = net.createServer();
let connectionCount = 0;
server.on('connection', () => {
connectionCount++;
console.log(`New connection. Total connections: ${connectionCount}`);
// 注意:此处未关闭连接,仅用于测试最大连接数
});
server.listen(3000, () => {
console.log('Server listening on port 3000');
});
通过不断向该服务器发起连接请求,可以观察并记录系统能支持的最大TCP连接数。