参数 | 备注 |
net.core.netdev_max_backlog=262144 | 当收包速率大于内核处理这些包的速率时,允许送到队列的数据包 |
net.core.optmem_max = 10000000(一千万) | 指定了每个套接字所允许的最大缓冲区的大小 |
net.core.rmem_default = 10000000(一千万) | 指定了接收套接字缓冲区大小的缺省值 |
net.core.rmem_max = 16777216(16兆) | 指定了接收套接字缓冲区大小的最大值(以字节为单位) |
net.core.somaxconn = 65535 | linux kernal 参数表示socket监听的backlog(监听队列)上限 |
net.core.wmem_default = 11059200 | 定义默认的发送窗口大小,对于更大的BDP来说,这个大小也应该更大 |
net.core.wmem_max = 16777216 (16兆) | 定义了发送窗口的最大大小,对于更大的BDP来说,这个大小也应该更大 |
net.ipv4.conf.all.rp_filter = 1 | 严禁模式1 松散模式0 |
net.ipv4.conf.default.rp_filter = 1 | |
net.ipv4.tcp_window_scaling = 0 | 关闭tcp_window_scaling, 要支持超过64KB窗口,必须启用该值 |
net.ipv4.tcp_ecn = 0 | 把TCP的直接拥塞通告(tcp_ecn)关掉 |
net.ipv4.tcp_sack = 1 | 关闭tcp_sack =1 启用有选择的应答(selective acknowledgment)这可以有选择的应答乱序接收到的报文来提高性能,这样可以让发送者只发送丢失的报文 对于广域网通信来说,这个选项应该启用,但是这会增加对CPU的占用 |
net.ipv4.tcp_max_tw_buckets = 5000 | 表示系统同时保持TIME_WAIT的套接字的最大数量,推荐5000 |
net.ipv4.tcp_max_syn_backlog = 262144 | 默认1024 表示SYN的队列长度,可以改成8192 甚至 262144,可以容纳更多等待连接的网络连接数 |
net.ipv4.tcp_syncookies = 1 | 表示开启SYN cookies 当出现SYN等待队列溢出时,启用cookies 来处理,可防范少量的SYN攻击默认为0表示关闭 |
net.ipv4.tcp_timestamps = 1 | 开启tcp时间戳以一种比重发超时更精确的方法,来启用对RTT的计算,为了更好的性能应该启用这项 |
net.ipv4.tcp_tw_reuse = 1 | 表示开启重用,允许将TIME-WAIT sockets 重新用于新的TCP连接,默认为0 表示关闭,推荐开启 |
net.ipv4.tcp_tw_recycle | 表示开启TCP连接中TIME-WAIT socket的快速回收,默认为 0表示关闭 |
net.ipv4.tcp_fin_timeout = 10 | 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-wait-2状态的时间 |
net.ipv4.tcp_keepalive_time = 60 | 表示当keepalive起用时,TCP发送keepalive消息的频度,缺省是2小时,改为30分钟,推荐60秒 |
net.ipv4.tcp_keepalive_probes = 3 | 如果对方不予应答,探测包的发送数据次数 |
net.ipv4.tcp_keepalive_intvl = 15 | keepalive 探测包的发送间隔 |
net.ipv4.tcp_mem | 确定TCP栈应该如何反应内存使用,每个值的单位都是内存页(通常是4KB) |
鸣谢知乎博主@https://zhuanlan.zhihu.com/p/225531205