linux常见内核参数的修改


1、修改方法(三种)
先说一下sysctl用法:
sysctl -a 打印全部支持修改的内核参数;
sysctl -p 使得写入/etc/sysctl.conf的内核参数生效;
sysctl +须要修改的参数 设置内核参数;
1,(临时修改)直接用echo的方式修改/proc/sys/文件系统,例如:
echo 5> /proc/sys/net/ipv4/tcp_retries2
2,(临时修改)用sysctl命令,例如:
sysctl net.ipv4.tcp_retries2=5
3,(持久化修改)修改/etc/sysctl.conf文件,例如:
echo "net.ipv4.tcp_retries2=5">> /etc/sysctl.conf缓存

2、经常使用内核参数服务器

net.ipv4.tcpfintimeout
#修改timewait状的存在时间,默认的2MSL
注意:timewait存在且生存时间为2MSL是有缘由的,见我上一篇博客为何会有timewait状态的存在,因此修改它有必定的风险,仍是根据具体的状况来分析。cookie

net.ipv4.tcpretries1
#放弃回应一个TCP链接请求前﹐须要进行多少次重试。RFC 规定最低的数值是3﹐这也是默认值并发

net.ipv4.tcpretries2
#TCP失败重传次数,默认值15,意味着重传15次才完全放弃.可减小到5,以尽早释放内核资源.socket

net.netfilter.nf_conntrack
#该模块在kernel 2.6.15(2006-01-03发布) 被引入,支持ipv4和ipv6,取代只支持ipv4的ip_connktrack,用于跟踪链接的状态,供其余模块使用。最多见的使用场景是 iptables 的 nat 和 state 模块:nat 根据转发规则修改IP包的源/目标地址,靠nf_conntrack的记录才能让返回的包能路由到发请求的机器。
state 直接用 nf_conntrack 记录的链接状态(NEW/ESTABLISHED/RELATED/INVALID)来匹配防火墙过滤规则。
在服务器访问量大时,若是内核netfilter模块conntrack相关参数配置不合理,就会致使新链接被drop掉。推荐bucket至少 262144,max至少 1048576,不够再继续加。
net.netfilter.nf_conntrack_count 的数字持续超过 nf_conntrack_max 的 20% 就该考虑调高上限了;tcp

net.ipv4.tcpsyncookies = 1
#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少许SYN×××,默认为0,表示关闭;ide

net.ipv4.tcptwreuse = 1
#表示开启重用。容许将TIME-WAIT sockets从新用于新的TCP链接,默认为0,表示关闭;ui

net.ipv4.tcptwrecycle = 1
#表示开启TCP链接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。.net

net.ipv4.tcpfintimeout = 30
#表示若是套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。队列

net.ipv4.tcpkeepalivetime = 1200
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改成20分钟。

net.ipv4.iplocalportrange = 1024 65000
#表示用于向外链接的端口范围。缺省状况下很小:32768到61000,改成1024到65000。

net.ipv4.tcpmaxtwbuckets = 5000
#表示系统同时保持TIMEWAIT套接字的最大数量,若是超过这个数字,
TIMEWAIT套接字将马上被清除并打印警告信息。默认为180000,改成5000。
对于Apache、Nginx等服务器,上几行的参数能够很好地减小TIMEWAIT套接字数量,可是对于Squid,效果却不大。此项参数能够控制TIMEWAIT套接字的最大数量,避免Squid服务器被大量的TIMEWAIT套接字拖死。*

如何尽可能处理TIMEWAIT过多
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
#简单来讲,就是打开系统的TIMEWAIT重用和快速回收,至于怎么重用和快速回收,这个问题我没有深究,实际场景中这么作确实有效果。用netstat或者ss观察就能得出结论。

net.ipv4.tcp_syncookies = 1打开这个syncookies的目的其实是:“在服务器资源(并不是单指端口资源,拒绝服务有不少种资源不足的状况)不足的状况下,尽可能不要拒绝TCP的syn(链接)请求,尽可能把syn请求缓存起来,留着过会儿有能力的时候处理这些TCP的链接请求”。若是并发量真的很是很是高,打开这个其实用处不大。

相关文章
相关标签/搜索