Performance 运行多个Docker虚拟机的服务器将如何处理TCP限制?
在负载非常重的情况下,服务器似乎不能足够快地“回收”TCP连接 我正在研究使用Docker通过在一台机器上创建节点服务器的多个实例,而不是使用多台机器,来处理每秒对API的请求数高于通常的请求数 如果设置了以下sysctl设置,则循环似乎会更快,但对于存在的套接字数量仍有严格限制: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
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跟踪的连接总数上限
netstat-nt
,您应该能够轻松地检查是否接近它。如果是这样,那么您使用的sysctl应该会有很大帮助
如果您的集装箱正在处理外部交通,则不应受到该限制;然而,你可以打第三个。您可以使用conntrack-S
检查跟踪的连接数,如有必要,通过调整/proc/sys/net/ipv4/netfilter/ip\u conntrack\u max
增加最大连接数
指出您看到的哪些症状会让您认为服务器没有足够快地回收连接,这会很有帮助吗