Linux TCP海量连接系统如何配置? 前言Linux系统默认的tcp连接数是比Windows少很多的服务端程序在Windows上成功接收大量设备连接Linux却不行就需要我们自己来手动配置1、查看ipv4端口范围cat /proc/sys/net/ipv4/ip_local_port_range2、更改ipv4端口范围sudo sysctl -w net.ipv4.ip_local_port_range1024 655353、查看系统允许操作数ulimit -n4、更改系统允许操作数重中之中ulimit -n 65535提醒可能在这一步操作之后再启动服务端程序海量设备连接就已经可以成功了若设备过多可将65535 改为 1000000...永久更改sudo vim /etc/security/limits.conf复制下方限制root用户root soft nofile 65535 root hard nofile 65535允许所有用户* soft nofile 65535 * hard nofile 65535复制完成后输入:wq保存并退出5、配置TCP监听、连接数等配置路径vim /etc/sysctl.conf复制下方可去除文字fs.file-max 2097152 net.core.somaxconn 65535 net.ipv4.tcp_max_syn_backlog 65535 net.core.netdev_max_backlog 65535 net.ipv4.tcp_syncookies 1 net.ipv4.tcp_tw_reuse 1 net.ipv4.tcp_fin_timeout 30复制之后输入:wq保存并退出6、结语讲解1.fs.file-max 2097152‌含义‌‌系统级最大文件句柄数‌。‌作用‌限制整个操作系统所有进程可以打开的文件描述符File Descriptor, FD总数。在 Linux 中TCP 连接、普通文件、Socket 等都视为文件描述符。‌为什么调大‌默认值通常较小如几万个。在高并发场景下如果系统总 FD 数达到上限即使单个进程的ulimit足够新连接也会因系统资源耗尽而被拒绝表现为Too many open files或连接建立失败。‌数值解读‌2097152 约等于 200 万意味着系统同时最多能维持约 200 万个打开的文件或网络连接。2.net.core.somaxconn 65535‌含义‌‌监听队列的最大长度全连接队列‌。‌作用‌定义了处于ESTABLISHED状态即已完成三次握手等待应用程序accept()取走的 Socket 队列最大长度。‌为什么调大‌默认值通常为 128。如果并发连接请求瞬间激增而应用程序处理accept的速度跟不上队列就会满。一旦队列满新的已握手连接会被丢弃或重置导致客户端连接超时或报错Connection refused。‌注意‌此值不应超过应用层 backlog 参数如 Nginx 的listen backlog或 Java 的backlog参数。3.net.ipv4.tcp_max_syn_backlog 65535‌含义‌‌半连接队列的最大长度‌。‌作用‌定义了处于SYN_RECV状态已收到客户端 SYN 包发送了 SYNACK等待客户端 ACK的连接队列最大长度。这是 TCP 三次握手的中间状态。‌为什么调大‌默认值通常为 1024 或 2048。在面对 SYN Flood 攻击或极高并发新建连接时如果半连接队列满内核会丢弃新的 SYN 包导致客户端连接超时。增大此值可以容纳更多正在握手的连接。‌关联‌通常建议此值与somaxconn保持一致或略大以应对握手阶段的突发流量。4.net.core.netdev_max_backlog 65535‌含义‌‌网络设备接收队列的最大长度‌。‌作用‌当网卡接收数据包的速度快于内核协议栈处理速度时数据包会暂存于此队列中。如果队列满新到达的数据包将被直接丢弃。‌为什么调大‌默认值通常为 1000。在高带宽或高包率PPS场景下内核软中断可能来不及处理所有数据包导致丢包。增大此值可以作为缓冲区吸收突发流量减少因内核处理延迟导致的丢包。‌适用场景‌特别适用于千兆/万兆网卡、高吞吐量的网关或负载均衡器。5.net.ipv4.tcp_syncookies 1‌含义‌‌启用 SYN Cookies 机制‌。‌作用‌一种防御 SYN Flood 攻击的保护机制。当半连接队列tcp_max_syn_backlog满时内核不再丢弃新的 SYN 包而是通过一种特殊的算法Cookie生成初始序列号回应客户端而不分配完整的 Socket 结构体内存。只有当客户端返回正确的 ACK 时内核才分配资源建立连接。‌为什么开启‌在不显著增加内存消耗的前提下极大提高了服务器抵御 SYN Flood 攻击的能力保证在极端压力下仍能为合法用户提供服务。6.net.ipv4.tcp_tw_reuse 1‌含义‌‌允许重用 TIME_WAIT 状态的 Socket‌。‌作用‌默认情况下TCP 连接关闭后会进入TIME_WAIT状态持续 60 秒由tcp_fin_timeout或其他参数决定期间该端口不能被复用。开启此选项后如果新的连接请求使用的四元组源IP、源端口、目的IP、目的端口与处于TIME_WAIT状态的连接相同内核允许直接复用该 Socket跳过等待时间。‌为什么开启‌对于作为‌客户端‌发起大量短连接 outbound 连接的服务器如微服务调用、代理后端可以快速回收端口资源避免Cannot assign requested address错误。‌注意‌在 NAT 环境下需谨慎使用可能导致数据包混淆但在大多数内部集群通信中是安全的且必要的。7.net.ipv4.tcp_fin_timeout 30‌含义‌‌FIN-WAIT-2 状态的超时时间‌。‌作用‌定义了当本地主动关闭连接并收到对方的 FIN 包后进入FIN-WAIT-2状态的保持时间。默认值通常为 60 秒。‌为什么调小‌将其从 60 秒降低到 30 秒甚至更低如 15 秒可以加速无效连接的清理过程释放内核内存和文件描述符资源。这对于高并发短连接场景非常有效能更快地回收系统资源。