标题:centos7 内核参数优化
内核优化
1、内核参数:用来约束LINUX系统内核、软件配置文件的参数
2、/etc/sysctl.conf 修改这个文件相当于修改/proc/sys/目录配置文件
3、sysctl -p 重启加载内核/etc/sysctl.conf配置文件
优化参数及说明
#开启内核转发功能 net.ipv4.ip_forward = 1 #表示开启时间戳与窗口缩放的选项 net.ipv4.tcp_timestamps = 1 #表示开启重用,允许将TIME-WAIT sockets重新用于新的tcp连接 重点net.ipv4.tcp_tw_reuse = 1 #表示开启TCP连接TIME-WAIT sockets的快速回收,让连接更快释放,默认为0,表示关闭 重点net.ipv4.tcp_tw_recycle = 1 #在内核内存中netfilter可以同时处理的任务数量(连接请求,连接跟踪条目) 重点net.ipv4.ip_conntrack_max = 655360 #打开FACK(Forward ACK)拥塞避免和快速重传功能(转发确认,不要在缓冲区停留) 重点net.ipv4.tcp_fack = 1 #选择性应答(SACK)是TCP的一项可选特性,可以提高某些网络中所有可用带宽的的使用率(选择性应答,提高网络传输效率,高并发时才可以测试出来) 重点net.ipv4.tcp_sack = 1 #可以接收多少个SYN请求数,缓冲列队列长度的意思,可以改大,默认1024 重点net.ipv4.tcp_max_syn_backlog = 8192 #表示socket监听(listen)的backlog上限,可以粗理解为服务端能一次处理backlog队列中的个数 net.core.somaxconn=2048 #表示用于向外连接的端口范围1024-65000,默认 客户端机器上配置 重点net.ipv4.ip_local_port_range = 1024 65000 #开启SYN缓存,开启SYN洪水攻击保护。TCP建立连接的3次握手过程中,当服务端收到最初的SYN请求时,会检查应用程序的syn_backlog(上条说的SYN队列)队列是否已满,启用syncookie,可以解决超高并发时的Cant't Connet'问题。但是会导致TIME_WAIT状态fallback为保持2MSL时间,高峰期时会导致客户端可复用连接而无法连接服务器 重点net.ipv4.tcp_syncookies = 1 #系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息,默认值为180000,设为较小数值此项参数可以控制TIME_WAIT套接字的最大数量,避免服务器被大量的TIME_WAIT套接字拖死。(是TCP挥手时出现的,等待关闭状态) 重点net.ipv4.tcp_max_tw_buckets = 5000 ### #打开重传重组包功能,为0的时候关闭重传重组包功能 重点net.ipv4.tcp_retrans_collapse = 1 #对于一个新建连接,服务器端内核要发送多少个SYN连接请求才决定放弃 重点net.ipv4.tcp_syn_retries = 2 #显示或设定linux回应SYN要求时尝试多少次重新发送初始SYN,ACK封包后才决定放弃,与上保持一致,功能与上一样,只是加了一个ACK,如果与上条冲突,以此条为准 重点net.ipv4.tcp_synack_retries = 2 #系统所能处理不属于任何进程的TCP sockets最大值(错误及异常的请求) 重点net.ipv4.tcp_max_orphans = 10000 #如果TCP连接在空闲30秒后,内核才发起probe(探查),如果probe3次(每次3秒即tcp_keepalive_intvl值)不成功,内核才彻底放弃,认为连接已失效 重点net.ipv4.tcp_keepalive_time = 30 重点net.ipv4.tcp_keepalive_probes = 3 重点net.ipv4.tcp_keepalive_intvl = 3 #放弃回应一个TCP连接请求前,需要进行多少次重试 net.ipv4.tcp_retries1 = 5 #在丢弃激活(已建立通讯状况)的TCP连接之前,需要进行多少次重试 net.ipv4.tcp_retries2 = 5 #表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2 状态的时间 重点net.ipv4.tcp_fin_timeout = 10 net.ipv4.tcp_mem = 178368 237824 356736 #低于此值,TCP没有内存压力 net.ipv4.tcp_mem[0] #在此值下,进入内在压力阶段 net.ipv4.tcp_mem[1] #高于此值,TCP拒绝分配socket net.ipv4.tcp_mem[2] #开启恶意icmp错误消息保护 重点net.ipv4.icmp_ignore_bogus_error_responses = 1
注:
1、功能测试
netstat -an 可以看TIME_WAIT状态信息 lsof 查看系统打开了多少文件 查看写的速度 [root@mail ~]# dd if=/dev/zero of=test.img bs=1M count=1000 1000+0 records in 1000+0 records out 1048576000 bytes (1.0 GB) copied, 6.26145 s, 167 MB/s 并发访问 while sleep 1;do ab -c 100 -n 1000 http://www.jfedu.net/ ;done 每秒100次并发 1000次 dd if=/dev/zero of=test.img bs=1M count=2000 写入文件,每次1M,2000次
2、快速查看当前TCP的各种状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' LAST_ACK 17 SYN_RECV 245 CLOSE_WAIT 2 ESTABLISHED 4017 FIN_WAIT1 242 FIN_WAIT2 30 TIME_WAIT 148
3、减少TIME_WAIT连接数量,编辑/etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭; net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。 net.ipv4.tcp_timestamps = 1 开启tw_recylce和tw_reuse一定需要timestamps的支持 net.ipv4.tcp_max_tw_buckets = 3000 #表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
4、tcp_max_syn_backlog 与 net.core.somaxconn
tcp_max_syn_backlog 是指定所能接受SYN同步包的最大客户端数量,即半连接上限,默认值是128,即SYN_REVD状态的连接数。 somaxconn 是Linux中的一个kernel参数,指的是服务端所能accept即时处理数据的最大客户端数量,即完成连接上限,默认值是128. 如redis 中的 tcp-backlog,TCP连接中已完成队列(完成三次握手之后)的长度,可以理解为即时处理的个数(非maxclients 最大链接数)
---------------end
版权声明:本文内容由极全网实名注册用户自发贡献,版权归原作者所有,极全网-官网不拥有其著作权,亦不承担相应法律责任。具体规则请查看《极全网用户服务协议》和《极全网知识产权保护指引》。如果您发现极全网中有涉嫌抄袭的内容,点击进入填写侵权投诉表单进行举报,一经查实,极全网将立刻删除涉嫌侵权内容。
扫一扫在手机打开
评论
已有0条评论
0/150
提交
热门评论