Linux 网络优化思路

在请求数比较大的场景下,你可能会看到大量处于TIME. WAIT状态的连接,它们会占用大量内存和端口资源。这时,我们可以优化与TIME_ WAIT状态相关的内核选项,比如采取下面几种措施。

增大处于 TIME_WAIT 状态的连接数量 net.ipv4.tcp_max_tw_buckets ,并增大连接跟踪表的大小 net.netfilter.nf_conntrack_max

减小 net.ipv4.tcp_fin_timeoutnet.netfilter.nf_conntrack_tcp_timeout_time_wait ,让系统尽快释放它们所占用的资源。

开启端口复用 net.ipv4.tcp_tw_reuse。这样,被 TIME_WAIT 状态占用的端口,还能用到新建的连接中。

增大本地端口的范围 net.ipv4.ip_local_port_range。这样就可以支持更多连接,提高整体的并发能力。

增加最大文件描述符的数量。你可以使用fs.nr_openfs.file-max ,分别增大进程和系统的最大文件描述符数;或在应用程序的 systemd 配置文件中,配置 LimitNOFILE ,设置应用程序的最大文件描述符数。