Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 运行多个Docker虚拟机的服务器将如何处理TCP限制?_Performance_Sockets_Tcp_Docker - Fatal编程技术网

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

Performance 运行多个Docker虚拟机的服务器将如何处理TCP限制?,performance,sockets,tcp,docker,Performance,Sockets,Tcp,Docker,在负载非常重的情况下,服务器似乎不能足够快地“回收”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连接

我正在研究使用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\u conntrack\u max
增加最大连接数

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