如何达到1M个并发TCP连接?

如何达到1M个并发TCP连接?

我正在尝试设置一个具有多个节点(1 个接收方 + 16 个发送方)的环境来建立1,000,000 (1M)并发 TCP 连接。

使用此工具:https://github.com/Microsoft/ntttcp-for-linux

使用Ubuntu 1804最新内核

目前,我很容易联系到262,156与 3 个以上发送方建立并发 TCP 连接。但此后,接收方似乎无法接受任何新的 TCP 连接。

Linux 上是否有任何配置可以调整以建立 1M TCP 连接?

我做了什么:

  • 接收方:
ulimit -n 1024000
./ntttcp -P 64 -M -e    ### '-e' to use epoll()

我在接收端运行此命令来监视 TCP 连接的数量:

ss -ta | grep ESTA | wc -l
  • 发送方
ulimit -n 1024000
echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range
./ntttcp -s10.0.0.4 -P 64 -n 10 -l 100    ### 64,000 concurrent TCP connections from one sender

答案1

以下是一些建议,请仔细检查您的可用资源。增加您的套接字描述符

ulimit -n 20000500

将每个进程的最大套接字描述符数量增加到大于当前内核最大值(fs.nr_open)的值

echo 20000500 > /proc/sys/fs/nr_open

临时端口从 500 到理论最大限制 65,536 – 只保留 1 到 500 之间的端口用于操作系统

sysctl -w net.ipv4.ip_local_port_range="500   65535"

客户端套接字描述符更改

echo 3000000 > /proc/sys/fs/nr_open
ulimit -n 2000000

echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
sysctl -w net.ipv4.tcp_mem="383865   511820   2303190"
sysctl -w net.ipv4.tcp_rmem="1024   4096   16384"
sysctl -w net.ipv4.tcp_wmem="1024   4096   16384"
sysctl -w net.ipv4.tcp_moderate_rcvbuf="0"

相关内容