CentOS 7 系统参数调整
配置文件:/etc/sysctl.conf
fs.file-max = 6815744
表示系统级别文件句柄数
net.ipv4.tcp_fin_timeout=15
表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.core.netdev_max_backlog=3000
当内核处理速度比网卡接收速度慢时,这部分多出来的包就会被保存在网卡的接收队列上,而该参数说明了这个队列的数量上限。
net.core.somaxconn=3000
该参数定义了系统中每一个端口最大的监听队列的长度,是个全局参数。该参数和 net.ipv4.tcp_max_syn_backlog 有关联,后者指的是还在三次握手的半连接的上限,该参数指的是处于 ESTABLISHED 的数量上限。若您的业务负载很高,则有必要调高该参数。listen(2) 函数中的参数 backlog 同样是指明监听的端口处于 ESTABLISHED 的数量上限,当 backlog 大于 net.core.somaxconn时,以 net.core.somaxconn 参数为准。
对应三次握手结束,还没有 accept 队列时的 ESTABLISHED 状态。accept 队列较多则说明服务端 accept 效率不高,或短时间内突发了大量新建连接。该值过小会导致服务器收到 syn 不回包,是由于 somaxconn 表满而删除新建的 syn 连接引起。若为高并发业务,则可尝试增大该值,但有可能增大延迟。
net.ipv4.tcp_max_syn_backlog
对应半连接的上限,曾用来防御常见的 synflood 攻击,但当 tcp_syncookies=1 时半连接可超过该上限。
net.ipv4.tcp_keepalive_intvl=15
keepalive探测包的发送间隔
net.ipv4.tcp_keepalive_probes=5
如果对方不予应答,探测包的发送次数
net.ipv4.ip_local_port_range=21000 61000
表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为21000到61000
net.ipv4.tcp_timestamps
开启TCP时间戳,以一种比重发超时更精确的方法来启用对 RTT 的计算,为实现更好的性能应该启用这个选项。
net.ipv4.tcp_tw_recycle
该参数用于快速回收 TIME_WAIT 连接。关闭时,内核不检查包的时间戳。开启时则会进行检查。不建议开启该参数,在时间戳非单调增长的情况下,会引起丢包问题,高版本内核已经移除了该参数。
net.ipv4.tcp_tw_reuse
配置文件:/etc/security/limits.conf 和 /etc/security/limits.d/90-nproc.conf
* soft nofile 40960
* hard nofile 40960
* soft nproc unlimited
* hard nproc unlimited