Linux Linux内核参数调优

摘要:
Linux内核参数调优方式:教QQ:103353122调优建议:1.如果出现错误,您可以查看操作系统日志,您可能会找到一些有用的信息。2.尽量不要像作者之前所做的那样“批量”修改内核参数。因此,在“调优”之后,性能将下降,事务错误的数量将增加。因此,可以考虑逐个调整参数,然后比较结果。注:我不太明白。我参考了一些参数net.core。在网络排序下可能需要调整的wmem _ max=124928

Linux内核参数调优

by:授客QQ1033553122

关于调优的建议:

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=20480socket 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=5TCP失败重传次数,默认值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-WAITsocket重新用于新的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的时候最好可以适当地增加该值)

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

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

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

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

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

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,内核会发送SYNACK数据报,以确认收到上一个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,这个值最大81921G以上内存这个值都是默认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状态超时时间,超过该时间就清除该连接,同上

免责声明:文章转载自《Linux Linux内核参数调优》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇usdt钱包如何跟交易所对接?Python之threading多线程,多进程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

TCP 之 FIN_WAIT_2状态处理流程

概述 在主动关闭方发送了FIN之后,进入FIN_WAIT_1状态,在此状态收到了ACK,则进入FIN_WAIT_2状态,而FIN_WAIT_2后续要做的工作是等待接收对端发过来的FIN包,并且发送ACK,进而进入到TIME_WAIT状态;本文主要关注从FIN_WAIT_1进入FIN_WAIT_2状态,以及在FIN_WAIT_2状态来包或者定时器触发后的处理...

raw_socket(原始套接字)以及普通socket使用终极总结

  一、传输层socket(四层socket,普通socket) 可参考本人以下博客: Windows Socket编程之UDP实现大文件的传输:http://blog.csdn.net/luchengtao11/article/details/71016222 Windows Socket编程之TCP实现大文件的传输:http://blog.csd...

Socket聊天逻辑

         1、A发送消息到服务器          2、服务器接收到消息后会给所有用户发送这条消息          3、如果有用户断开连接,则不用给此用户发送 一、创建持久性连接服务器  net,设置其端口号为9000 const net = require(“net”); const server = net.creatServer(); se...

Java命令学习系列(三)——Jmap

jmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。可以使用jmap生成Heap Dump。在Java命令学习系列(零)——常见命令及Java Dump介绍和Java命令学习系列(二)——Jstack中分别有关于Java Dump以及线程 Dump的介绍。这篇文章主要介绍Java的堆Du...

HttpClient4.3教程 第二章 连接管理

HttpClient4.3教程 第二章 连接管理 Posted on2013 年 10 月 11 日 2.1.持久连接 两个主机建立连接的过程是很复杂的一个过程,涉及到多个数据包的交换,并且也很耗时间。Http连接需要的三次握手开销很大,这一开销对于比较小的http消息来说更大。但是如果我们直接使用已经建立好的http连接,这样花费就比较小,吞吐率更大...

10 TCP限流技术

  TCP限流是因为让接收方充分接受完消息,保证数据安全,不会丢失 一、窗口机制介绍 发送端和接收端都拥有一个窗口,当发送端发送数据时,落进窗口的数据被发送,当接受端接受数据时,落进接收端窗口的数据将会被接受。由此可见可以通过窗口大小限制流量 二、滑动窗口技术(限流使用到的技术) 1 TCP滑动窗口技术通过动态改变窗口大小来调节两台主机间的数据传输。每个T...