tcp连接保持管理:
# 如果在该参数指定时间内某条连接处于空闲状态,则内核向远程主机发起探测
net.ipv4.tcp_keepalive_time = 7200
# 多久探测一次
net.ipv4.tcp_keepalive_intvl = 75
# 连续探测次数
net.ipv4.tcp_keepalive_probes = 9
tips:
内核发送保活探测的最大9次,如果探测次数大于这个数,则断定远程主机不可达,则关闭该连接并释放本地资源,一个连接7200s空闲后,内核会每隔75秒去重试,若连续9次则放弃。这样就导致一个连接经过2h11min的时间才能被丢弃,降低该值能够尽量减小失效连接所占用的资源,而被新的连接所使用。
#表示在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.netdev_max_backlog=3000
#控制每个端口的tcp syn的队列长度,来自客户端的连接请求需要排队,直至服务器接受,如果连接请求数大于该值,则连接请求会被丢弃,客户端无法连接服务器,一般服务器要提高此值
net.ipv4.tcp_max_syn_backlog = 1024
#控制内核向某个socket的ack,syn段(三次握手的第二次握手)重新发送响应的次数,降低此值可以尽早检测到来自远程主机的连接失败尝试
net.ipv4.tcp_synack_retries = 5
#控制内核向已建立连接的远程主机重新发送数据的次数,降低此值,可以尽早的检测连接失效
net.ipv4.tcp_retries2 = 15
#TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。在收到TCP ACK包时,TCP服务器在根据那个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。
net.ipv4.tcp_syncookies = 1