我写了一个琐碎的node.js
客户端/服务器对来测试并发连接的本地限制。它们之间不发送任何数据:10,000 个客户端连接并等待。
每次运行测试时,我都会生成一个服务器和 10 个客户端,每个客户端创建 1000 个连接。
达到约 8000 个并发连接需要 2 秒多一点的时间。然后它就停止了。没有错误发生(on 'error'
回调不会触发,close
也不触发)。连接“阻塞”,没有结果或超时。
我已经提高了最大文件描述符限制(ulimit -n
),并允许 TCP 堆栈通过以下方式消耗更多读/写内存sysctl
(net.ipv4.tcp_rmem
and wmem
).
我要达到的上限是多少?我怎样才能举起它?
- 编辑 -
服务器程序,删除了日志代码:
clients = []
server = net.createServer()
server.on 'connection', (socket) ->
clients.push socket
server.listen 5050
客户端(这运行n
times):
sockets = []
for [1..num_sockets]
socket = new net.Socket
sockets.push socket
socket.connect 5050
这些是系统限制:
sysctl -w net.ipv4.ip_local_port_range="500 65535"
sysctl -w net.ipv4.tcp_tw_recycle="1"
sysctl -w net.ipv4.tcp_tw_reuse="1"
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sysctl -w net.ipv4.tcp_wmem="4096 16384 16777216"
sysctl -w fs.file-max="655300"
sysctl -w fs.nr_open="3000000"
ulimit -n 2000000
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)