gpt4 book ai didi

performance - 运行多个 Docker 虚拟机的服务器将如何处理 TCP 限制?

转载 作者:可可西里 更新时间:2023-11-01 02:33:40 24 4
gpt4 key购买 nike

在负载非常重的情况下,服务器似乎无法足够快地“回收”TCP 连接。

我正在研究通过在一台机器上创建节点服务器的多个实例而不是使用多台机器来使用 Docker 来处理比平常更多的 API 每秒请求数。

如果设置了以下 sysctl 设置,回收似乎确实发生得更快,但对于可以存在的套接字数量仍然存在硬性限制:

net.ipv4.ip_local_port_range='1024 65000'
net.ipv4.tcp_tw_reuse='1'
net.ipv4.tcp_fin_timeout='15

当运行多个 docker 实例时,tcp 连接的总上限是否仍然等于“父”机器可以处理的最大 tcp 连接数?

最佳答案

是的,TCP 连接的总上限将受到 Docker 主机的限制。

但是,存在三个截然不同的限制:

  • 打开连接的总上限(不考虑源/目标 IP 地址),这与文件描述符的最大数量有关,并且可以非常高(即数百万)
  • 给定本地 IP 地址的出站连接总数上限(每个本地 IP 地址限制为 64K)
  • netfilter 跟踪的连接总数

TCP 端口回收处理第二个限制。如果您在主机和容器中使用 netstat -nt,您应该能够轻松检查您是否接近它。如果是这样,您使用的 sysctl 应该会有很大帮助。

如果您的容器正在处理外部流量,则不应受该限制;但是,您可以打第三个。您可以使用 conntrack -S 检查跟踪的连接数,如有必要,通过调整 /proc/sys/net/ipv4/netfilter/ip_conntrack_max .

指出您看到的哪些症状会很有帮助,这些症状会让您认为服务器没有足够快地回收连接?

关于performance - 运行多个 Docker 虚拟机的服务器将如何处理 TCP 限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19761316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com