前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux Linux内核参数调优

Linux Linux内核参数调优

作者头像
授客
发布2019-09-11 15:04:54
7K0
发布2019-09-11 15:04:54
举报
文章被收录于专栏:授客的专栏

关于调优的建议:

1、出错时,可以查看操作系统日志,可能会找到一些有用的信息

2、尽量不要“批量”修改内核参数,笔者就曾这么干过,结果“调优”后,性能反而下降,事务出错数反而增加,所以,调优的时候可以考虑逐个参数进行调优,然后对比效果。

说明:我也不是很懂,参考自网络整理了下可能需要调整的一些参数

net.core.wmem_max=124928 发送套接字缓冲区大小的最大值(以字节为单位),参考值873200

net.core.rmem_max=124928 接收套接字缓冲区大小的最大值(以字节为单位),参考值873200

net.ipv4.tcp_wmem=4096 16384 4194304 为自动调优定义socket使用的内存.第一个值是为socket发送缓冲区分配的最少字节数;第二个值是默认值(该值会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是发送缓冲区空间的最大字节数(该值会被wmem_max覆盖)

net.ipv4.tcp_rmem=4096 87380 4194304 为自动调优定义socket使用的内存.第一个值是为socket接收缓冲区分配的最少字节数;第二个值是默认值(该值会被rmem_default覆盖), 缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是接收缓冲区空间的最大字节数(该值会被rmem_max覆盖)

net.ipv4.tcp_mem=177888 436600 873200 确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB).第一个值是内存使用的下限,低于此值,TCP没有内存压力;第二个值是内存压力模式开始对缓冲区使用应用压力的上限,在此值下,进入内存压力阶段; 第三个值是内存使用的上限. 高于此值,TCP拒绝分配socket,将报文丢弃,从而减少对内存的使用.对于较大的商业数据平台可以增大这些值(注意,其单位是内存页而不是字节)

net.core.netdev_max_backlog=1000 每个网卡接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

net.core.somaxconn=128 用来限制监听(LISTEN)队列最大数据包的数量,默认是128,超过这个数量就会导致链接超时或者触发重传机制.对繁忙的服务器,增加该值有助于网络性能.可调整到256

net.core.optmem_max=20480 socket buffer的最大初始化值,默认20k

net.core.netdev_max_backlog=1000,修改16384,每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目,对重负载服务器而言,该值需要调高一点

net.core.wmem_default=124928 默认的发送窗口大小(以字节为单位)

net.core.rmem_default=124928 默认的接收窗口大小(以字节为单位)

net.core.wmem_max=124928 最大的TCP数据发送缓冲,参考值 873200

net.core.rmem_max=124928 最大的TCP数据接收缓冲,参考值873200

net.ipv4.tcp_max_syn_backlog=2048 默认1024,对重负载服务器,可调整到2048,以以容纳更多等待连接的网络连接

net.ipv4.tcp_retries2=5 TCP失败重传次数,默认值15,意味着重传15次才彻底放弃.可减少到5,尽早释放内核资源

net.ipv4.tcp_keepalive_time=7200

net.ipv4.tcp_keepalive_probes=9

net.ipv4.tcp_keepalive_intvl=75

意思是如果某个TCP连接在idle 2个小时(7200s)后,内核才发起探测(probe)。如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效,对服务器而言,显然上述值太大. 参考值如下:

net.ipv4.tcp_keepalive_time=1800

net.ipv4.tcp_keepalive_probes=3

net.ipv4.tcp_keepalive_intvl=30

net.ipv4.ip_local_port_range="1024 65000" 表示用于向外连接的端口范围。参考值:1024 65000

net.ipv4.tcp_tw_reuse=1 表示开启重用。允许将处于TIME-WAIT 的socket重新用于新的TCP连接,默认为0,表示关闭,根据TCP/IP协议,连接断开之后,端口不会立刻被释放,而是处于TIME_WAIT状态,等待两分钟半后,才会被释放掉,才能被新连接使用,大量并发的情况下,如果已被占用的端口号未被释放,部分新建连接因为无法分配到端口号而失败。

通过配置TCP_TW_REUSE参数,来释放TIME_WAIT状态的端口号给新连接使用

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

net.ipv4.tcp_fin_timeout=30 默认值60,这个参数决定了它保持在FIN-WAIT-2状态的时间,参考值 30(一般来说FIN-WAIT-2的连接也极少)

net.ipv4.tcp_max_tw_buckets=5000 默认为 131072,参考值5000,表示系统同时保持TIME_WAIT socket的最大数量,如果超过这个数字,TIME_WAIT socket将立刻被清除并打印警告信息。事实上做NAT的时候最好可以适当地增加该值)

对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量

net.ipv4.tcp_sack=1 默认开启,启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选项应该启用,但是会增加对CPU的占用

net.ipv4.tcp_fack=1 仅sack=1时起作用,默认开启,启用转发应答,可以进行有选择应答(SACK)从而减少拥塞情况的发生,这个选项也应该启用。

net.ipv4.tcp_timestamps=1 默认开启,TCP时间戳(会在TCP包头增加12个字节),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT 的计算,为实现更好的性能应该启用这个选项。

net.ipv4.tcp_window_scaling=1 默认开启,启用RFC 1323定义的window scaling,要支持超过64KB的TCP窗口,必须启用该值(1表示启用),TCP窗口最大至1GB,TCP连接双方都启用时才生效。

net.ipv4.tcp_low_latency=0 允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项应该禁用。

net.ipv4.tcp_syn_retries=2 对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间,对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外的连接,对进来的连接, 是由tcp_retries1决定的

net.ipv4.tcp_synack_retries=2 默认5,对于远端的连接请求SYN,内核会发送SYN + ACK数据报,以确认收到上一个 SYN连接请求包。这是所谓的三次握手( threeway handshake)机制的第二个步骤。这里决定内核在放弃连接之前所送出的 SYN+ACK 数目。不应该大于255,默认值是5,对应于180秒左右时间,可修改为2

net.ipv4.tcp_orphan_retries=0 在近端丢弃TCP连接之前﹐要进行多少次重试。默认值是7个﹐相当于 50秒 - 16分钟﹐视 RTO 而定。如果您的系统是负载很大的web服务器﹐那么也许需要降低该值﹐这类 sockets 可能会耗费大量的资源。另外参的考tcp_max_orphans。

net.ipv4.tcp_syncookies=0 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

以下几个参数文件需要打开防火墙才会存在

net.netfilter.nf_conntrack_max=65536 系统支持的最大ipv4连接数,默认65536(事实上这也是理论最大值),同时这个值和你的内存大小有关,如果内存128M,这个值最大8192,1G以上内存这个值都是默认65536,这个值受/proc/sys/net/ipv4/ip_conntrack_max限制

net.netfilter.nf_conntrack_tcp_timeout_established=432000 已建立的tcp连接的超时时间,默认432000,也就是5天。影响:这个值过大将导致一些可能已经不用的连接常驻于内存中,占用大量链接资源,从而可能导致NAT ip_conntrack: table full的问题。建议:对于NAT负载相对本机的 NAT表大小很紧张的时候,可能需要考虑缩小这个值,以尽早清除连接,保证有可用的连接资源;如果不紧张,不必修改

net.netfilter.nf_conntrack_tcp_timeout_time_wait=120 time_wait状态超时时间,超过该时间就清除该连接,保持不变

net.netfilter.nf_conntrack_tcp_timeout_close_wait=60 close_wait状态超时时间,超过该时间就清除该连接,保持不变

net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120 fin_wait状态超时时间,超过该时间就清除该连接,同上

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-06-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NAT 网关
NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档