小樱 发表于 2016/2/17 02:12

linux 内核centos对/etc/sysctl.conf文件做网络资源与系统资源优化,增加可用的本地端口,提高并发效率到10W每秒或者更大QPS

编辑文件:/etc/sysctl.conf


kernel.shmmax = 68719476736
最大共享内存(推荐值:68719476736)

kernel.shmall = 4294967296
共享内存总大小限制(推荐值:4294967296)

kernel.shmmni = 4096
共享内存段最大个数(推荐值:4096)

net.ipv4.tcp_syncookies = 1
启用SynCookies(前端节点服务器建议1,源服务器建议0)

增加net.ipv4.tcp_tw_recycle = 1
表示开启TCP连接中TIME_WAIT sockets的快速回收,默认为0,表示关闭。实在吃不消不得已才开启,毕竟可能会引起timed_out连接失败的问题甚至tcp长连接突然访问中断导致断流。

net.ipv4.tcp_tw_reuse = 1
Tcp TIME_WAIT 端口重用(建议是)

net.ipv4.icmp_echo_ignore_all = 1
忽略所有ping请求包(建议是,在被ICMP DDOS攻击不会产生上行流量,根据自身情况是否)

kernel.threads-max = 50000
最大线程个数(由于65535端口限制,这里建议取值50000为佳)

fs.file-max = 1000000
可分配的打开文件句柄最大个数(推荐值:1000000)

net.ipv4.tcp_fin_timeout = 10
修改系統默认的 TIMEOUT 时间,默认为60,这个参数决定了它保持在FIN_WAIT2状态的时间。

net.ipv4.tcp_keepalive_time = 30
表示当keepalive启用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为30秒。

net.ipv4.tcp_max_tw_buckets = 5000
表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息/var/log/messages(TCP: time wait bucket table overflow)。默认为180000,改为5000。

net.ipv4.tcp_max_syn_backlog = 8192
表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接(SYN_RECV)的网络连接数。使用ss命令查看第四列观察发送队列情况,如果当前已启用syncookie,那么设置max_syn_backlog值无效化
通过dmesg可以确认是否有该情况发生 dmesg | grep "TCP: drop open request from",可以用命令 netstat -ant|grep SYN_RECV|wc -l 查看具体大小,大多数情况下这个值应该是0或很小,因为半连接状态从第一次握手完成时进入,第三次握手完成后退出,正常的网络环境中这个过程发生很快,如果这个值较大,服务器极有可能受到了SYN Flood攻击。
另外,上述行为受到内核参数tcp_syncookies的影响,若启用syncookie机制,当半连接队列溢出时,并不会直接丢弃SYN包,而是回复带有syncookie的SYC+ACK包,设计的目的是防范SYN Flood造成正常请求服务不可用。

net.ipv4.ip_local_port_range = 1025 64511
表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1025到64511。

net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
sock缓冲区大小,默认值124928改成67108864



net.netfilter.nf_conntrack_max = 1048576
net.netfilter.nf_conntrack_buckets = 262144
net.netfilter.nf_conntrack_tcp_timeout_established = 3600
nf_conntrack表最大连接数修改,解决tcp ping丢包问题。nf_conntrack_max决定连接跟踪表的大小,默认值是65535,修改为1048576。
nf_conntrack_buckets决定存储conntrack条目的哈希表大小,默认值是nf_conntrack_max的1/4。
nf_conntrack_tcp_timeout_established决定ESTABLISHED状态连接的超时时间,默认值是5天,可以缩短到1小时,即3600,不推荐修改这个设置,会导致游戏服务器出现玩家1小时立即出现掉线情况。


修改后,执行sysctl -p 生效


最后还有ulimit的设置
http://bbs.itzmx.com/thread-8598-1-1.html

要是上面看不懂就看这个帖子,列举出几个比较重要的内核优化参数
https://bbs.itzmx.com/thread-15933-1-1.html

页: [1]
查看完整版本: linux 内核centos对/etc/sysctl.conf文件做网络资源与系统资源优化,增加可用的本地端口,提高并发效率到10W每秒或者更大QPS