容器服务
参数 | 配置范围 | 参数说明 | 配置建议 |
参数 | 配置范围 | 参数说明 | 配置建议 |
net.core.netdev_max_backlog | 节点级别 | 用于设置每个网络接口的最大接收数据包队列长度。当网络接口接收到数据包时,这些数据包首先被放置到接收队列(receive queue)中等待软中断处理。如果接收队列已满,新的数据包将被丢弃。 | 当主机侧的处理性能相对不足时,可以适当调高该值。 |
net.core.optmem_max | 节点级别 | 该参数为 Linux 内核参数,用于设置系统中所有套接字默认的最大的套接字缓冲区大小,以字节为单位。 这个参数影响套接字缓冲区的优化策略。当一个新套接字被创建时,系统会分配一定数量的内存作为套接字缓冲区。该参数可以限制这个缓冲区的最大大小,避免不必要的内存使用。 | 可以根据业务情况,适当提高该值,以提高 socket 的缓冲区大小。 容器服务集群的默认值为 20480。 |
net.ipv4.neigh.default.gc_stale_time net.ipv4.neigh.default.gc_thresh1 net.ipv4.neigh.default.gc_thresh2 net.ipv4.neigh.default.gc_thresh3 | 节点级别 |
| 这几个内核参数用于设置节点 ARP 表项的回收和阀值。在容器服务的 VPC-CNI 网络集群中,流量的访问会依赖系统 ARP 表。 说明 容器服务集群已经对内核参数进行了调优,默认值分别为:
在更大规模的集群中,您可以根据需求再对这些值进行调整。 |
net.ipv4.tcp_mem | 节点级别 | 用于设置 TCP 的总缓冲区大小/范围。格式为[min, default, max],参数的单位均为 page,每个 page 的大小为 4kb,具体取值是在系统启动时,根据系统内存大小计算得到的。
| 该值根据不同规格,系统默认值一般不同。作为节点的 TCP 缓冲全局性配置,可以根据场景和规格调高该值。 |
net.core.somaxconn | Pod 级别 | 用于设置系统中每一个端口的最大监听队列长度,这是个全局的参数,默认值为 128。限制了每个端口接收新 TCP 连接监听队列的大小。 | 调大此参数可以一定程度上避免高并发服务遇到突发流量导致失败。 对于 Server 类服务,可以适当调高该值。 |
net.ipv4.tcp_max_syn_backlog | Pod 级别 | 最大 TCP 半连接队列/SYN 队列大小,默认值为 1024。 如果队列已满,新的连接请求将被拒绝或丢弃。 该参数较小时,可能会导致 SYN 队列溢出,从而无法处理所有的连接请求。这可能会导致客户端无法成功建立连接,出现连接超时或连接被拒绝的情况。 | 可以根据业务场景,调大该值,提高服务端的并发连接数。 |
net.ipv4.tcp_rmem | Pod 级别 | 用于设置接收缓冲区大小和范围,格式为[min, default, max],默认值分别是[4096, 87380, 6291456],参数的单位均为 byte。
| 可以根据 Pod 的业务场景,调节该值,提高并发连接性能。 |
net.ipv4.tcp_wmem | Pod 级别 | 用于设置发送缓冲区大小和范围,格式为[min, default, max]。默认值分别是[4096, 16384, 4194304]。
| 可以根据 Pod 的业务场景,调节该值,提高并发连接性能。 |
net.ipv4.tcp_max_tw_buckets | Pod 级别 | 用于设置处于TIME_WAIT状态的 TCP 连接的最大值,默认值为 5000,默认值会根据系统内存进行调整。 当系统中处TIME_WAIT状态的 TCP 连接数超过该值时,新关闭的连接就不再经历 TIME_WAIT状态,而是直接关闭并打印警告日志。 | 当系统的连接数多时,可能就需要根据需要调高该值。该参数值过大时易耗尽节点资源。 |
net.ipv4.tcp_tw_reuse | Pod 级别 | 用于设置是否复用处于TIME_WAIT 状态的 TCP 连接,默认为 0,表示禁止复用连接。该配置仅适用于主动发起建立 TCP 连接的一方,也就是仅适用于客户端。 开启该选项后,主动发起建立连接的一方在调用connect()函数时,如果选择的端口,已经被相同四元组的连接占用,那么就判断该连接是否处于TIME_WAIT状态,如果该连接处于TIME_WAIT状态并且TIME_WAIT状态持续时间已超过 1 秒,那么就重用这个连接,然后就可以正常使用该端口了。 该参数只对客户端(反向代理服务器连接 upstream 时也可认为是客户端)有效。 | 对于大量客户端连接的请求的场景,可以打开该配置,也就是设置成 1,提高性能。 容器服务集群的默认值为 2。 |
net.ipv4.tcp_fin_timeout | Pod 级别 | 指定主动关闭连接方等待被动关闭连接方返回 FIN 报文(第三次挥手)的最长时间,也就是设置主动关闭连接方处于FIN-WAIT-2状态的最长时间,默认为 60 秒。 | 调小该参数,以便加快系统关闭处于FIN_WAIT2状态的 TCP 连接。对于 Server 端服务,如果客户端长时间不关闭连接,会长时间挤FIN_WAIT2状态,进而导致内核 Crash。 |
net.ipv4.tcp_keepalive_time | Pod 级别 | 该参数是 TCP 协议中的一个参数,表示 TCP 连接的空闲时间。当一个 TCP 连接在这个时间内没有任何数据传输时,系统会发送一个探测包来检测连接是否还存活。默认值为 7200 秒(2 小时),可以通过修改系统的配置文件来修改参数。 | TCP 内核超时时间配置,可以根据业务需求进行调整。 |
net.ipv4.tcp_keepalive_intvl | Pod 级别 | 探测消息未获得响应时,重发该消息的间隔时间,单位为秒。 | TCP 内核超时时间配置,可以根据业务需求进行调整。 |
net.ipv4.tcp_keepalive_probes | Pod 级别 | 在认定 TCP 连接失效之前,最多发送多少个 keepalive 探测消息。 | TCP 内核超时时间配置,可以根据业务需求进行调整。 |
net.netfilter.nf_conntrack_buckets | Pod 级别 | 设置 Linux 系统中连接跟踪表(Connection Tracking Table)的哈希桶(buckets)数量。 | 连接跟踪表容量,可视业务场景调整。 |
net.netfilter.nf_conntrack_max | Pod 级别 | 连接跟踪表的大小。 默认值为net.netfilter.nf_conntrack_buckets * 4。 | 连接跟踪表最大条数,可视业务场景调整。当连接跟踪表满时,会出现无法连接的现象。 |