CentOS7内核参数

临时改变某个系统参数的值,可以用两种方法来实现,例如想启用IP路由转发功能:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# sysctl -w net.ipv4.ip_forward=1
以上两种方法都可能立即开启路由功能,但如果系统重启,或执行了
# service network restart
命令,所设置的值即会丢失,如果想永久保留配置,可以修改/etc/sysctl.conf文件
将 net.ipv4.ip_forward=0 改为 net.ipv4.ip_forward=1
sysctl命令参数:
-w 临时改变某个指定参数的值
-a 显示所有的系统参数,可使用grep来查看设置系统默认值和修改的值是否生效
-p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

http://blog.csdn.net/largetalk/article/details/16863689
http://www.360doc.com/content/14/0606/16/3300331_384326124.shtml

以下是阿里云的内核参数设置

#关闭ipv6
net.ipv6.conf.all.disable_ipv6 = 1
默认:0

vm.swappiness = 0
默认:30
swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
也就是说,如果此值为30,你的内存在使用到100-30=70%的时候,就开始出现有交换分区的使用。大家知道,内存的速度会比磁盘快很多,这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。

net.ipv4.neigh.default.gc_stale_time = 120
默认:60
ARP参数,检查一次相邻层记录的有效性的周期。当相邻层记录失效时,将在给它发送数据前,再解析一次。

net.ipv4.conf.all.rp_filter = 0
默认:1
rp_filter(reverse-pathfiltering),反向过滤技术,系统在接收到一个IP包后,检查该IP是不是合乎要求,不合要求的IP包会被系统丢弃。该技术就称为rpfilter。
怎么样的包才算不合要求呢?例如:网卡1为默认路由,用户在网卡2上收到一个IP包,检查其IP为B。然后考查:对于B这个IP,在发送时应该用哪个网口,如果在不应该接收到该包的网口上接收到该IP包,例如网卡2,丢弃该包。

net.ipv4.conf.all.arp_announce = 2
默认:0
对网络接口上,本地IP地址的发出的ARP回应,作出相应级别的限制, 确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口 
0 - (默认) 在任意网络接口(eth0,eth1,lo)上的任何本地地址 
1 -尽量避免不在该网络接口子网段的本地地址做出arp回应. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果该来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理. 
2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.

net.ipv4.tcp_max_tw_buckets = 5000
默认:4096
表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
设为较小数值此项参数可以控制TIME_WAIT套接字的最大数量,避免服务器被大量的TIME_WAIT套接字拖死。

net.ipv4.tcp_max_syn_backlog = 65535
默认:1024,小内存的系统模式是128
参数决定了SYN_RECV状态队列的数量,超过这个数量,系统将不再接受新的TCP连接请求,一定程度上可以防止系统资源耗尽。可根据情况增加该值以接受更多的连接请求。
SYN_RECV是指,服务端被动打开后,接收到了客户端的SYN并且发送了ACK时的状态。再进一步接收到客户端的ACK就进入ESTABLISHED状态。 

net.ipv4.tcp_synack_retries = 2
默认:5
各类攻击介绍:http://www.ijiandao.com/safe/cto/15952.html
syn-ack握手状态重试次数,默认5,遭受syn-flood攻击时改为12
tcp_synack_retries 显示或设定 Linux 核心在回应 SYN 要求时会尝试多少次重新发送初始 SYN,ACK 封包后才决定放弃。这是三次握手 (threeway handshake) 的第二个步骤。即是说系统会尝试多少次去建立由远端启始的 TCP 连线。tcp_synack_retries 的值必须为正整数,并不能超过 255。因为每一次重新发送封包都会耗费约 3040 秒去等待才决定尝试下一次重新发送或决定放弃。tcp_synack_retries 的缺省值为 5,即每一个连线要在约 180 秒 (3 分钟) 后才确定逾时。


以下是老男孩生产中常用的参数

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

net.ipv4.tcp_synack_retries = 1
默认:5
tcp_synack_retries 显示或设定 Linux 核心在回应 SYN 要求时会尝试多少次重新发送初始 SYN,ACK 封包后才决定放弃。这是三次握手 (threeway handshake) 的第二个步骤。即是说系统会尝试多少次去建立由远端启始的 TCP 连线。tcp_synack_retries 的值必须为正整数,并不能超过 255。因为每一次重新发送封包都会耗费约 3040 秒去等待才决定尝试下一次重新发送或决定放弃。tcp_synack_retries 的缺省值为 5,即每一个连线要在约 180 秒 (3 分钟) 后才确定逾时。

net.ipv4.tcp_retries2 = 5
默认:15
在丢弃激活(已建立通讯状况)的TCP连接之前﹐需要进行多少次重试。默认值为15,根据RTO的值来决定,相当于13-30分钟(RFC1122规定,必须大于100秒).(这个值根据目前的网络设置,可以适当地改小,我的网络内修改为了5)

net.ipv4.tcp_keepalive_time = 600
默认:7200
表示当keepalive起用的时候,TCP发送keepalive消息的频度,用于确认TCP连接是否有效。缺省是2小时。

net.ipv4.tcp_keepalive_probes = 3
默认:9
TCP发送keepalive探测以确定该连接已经断开的次数。(注意:保持连接仅在SO_KEEPALIVE套接字选项被打开是才发送.次数默认不需要修改,当然根据情形也可以适当地缩短此值.设置为5比较合适)

net.ipv4.tcp_keepalive_intvl = 15
默认:75
探测消息发送的频率,乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间。默认值为75秒,也就是没有活动的连接将在大约11分钟以后将被丢弃。(对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15是个比较合适的值)

net.ipv4.tcp_fin_timeout = 2
默认:60
表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
SERVER由于某种原因关闭连接,如keepalive超时,这样,作为主动关闭的SERVER一方就会进入 FIN_WAIT2状态,但TCP/IP协议栈有个问题,FIN_WAIT2状态是没有超时的(不象TIME_WAIT状态),所以如果CLIENT不关闭,这个FIN_WAIT_2状态将保持到系统重新启动,越来越多的FIN_WAIT_2状态会致使内核crash。 

net.ipv4.tcp_max_tw_buckets = 36000
默认:4096
表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
设为较小数值此项参数可以控制TIME_WAIT套接字的最大数量,避免服务器被大量的TIME_WAIT套接字拖死。

net.ipv4.tcp_tw_recycle = 1
默认:0
表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。在nat环境中,建议关闭
tw_reuse,tw_recycle 必须在客户端和服务端timestamps 开启时才管用(默认打开)
注:它用来快速回收TIME_WAIT连接,不过如果在NAT环境下会引发问题。现在很多公司都用LVS做负载均衡,通常是前面一台LVS,后面多台后端服务器,这其实就是NAT,当请求到达LVS后,它修改地址数据后便转发给后端服务器,但不会修改时间戳数据,对于后端服务器来说,请求的源地址就是LVS的地址,加上端口会复用,所以从后端服务器的角度看,原本不同客户端的请求经过LVS的转发,就可能会被认为是同一个连接,加之不同客户端的时间可能不一致,所以就会出现时间戳错乱的现象,于是后面的数据包就被丢弃了,具体的表现通常是是客户端明明发送的SYN,但服务端就是不响应ACK,大概意思是说TCP有一种行为,可以缓存每个连接最新的时间戳,后续请求中如果时间戳小于缓存的时间戳,即视为无效,相应的数据包会被丢弃。
http://blog.csdn.net/caianye/article/details/38540867
http://www.cnblogs.com/lulu/p/4149312.html

net.ipv4.tcp_tw_reuse = 1
默认:0
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_max_orphans = 32768
默认:4096
系统所能处理不属于任何进程的TCP sockets最大数量。假如超过这个数量,那么不属于任何进程的连接会被立即reset,并同时显示警告信息。之所以要设定这个限制﹐纯粹为了抵御那些简单的 DoS 攻击﹐千万不要依赖这个或是人为的降低这个限制,更应该增加这个值(如果增加了内存之后)。每个孤儿套接字最多能够吃掉你64K不可交换的内存。

net.ipv4.tcp_max_syn_backlog = 16384
默认:128
参数决定了SYN_RECV状态队列的数量,超过这个数量,系统将不再接受新的TCP连接请求,一定程度上可以防止系统资源耗尽。可根据情况增加该值以接受更多的连接请求。 

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

net.ipv4.tcp_rmem = 32768 131072 16777216
默认:4096 87380   6291456
与tcp_wmen类似,不过它表示的是为自动调优所使用的接收缓冲区的值

net.ipv4.tcp_mem = 786432 1048576 1572864
默认:22020    29361   44040
确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)
第一个值是内存使用的下限。低于此值,TCP没有内存压力
第二个值是内存压力模式开始对缓冲区使用应用压力的上限。在此值下,进入内存压力阶段
第三个值是内存上限,在这个层次上可以将报文丢弃,从而减少对内存的使用,对于较大的BDP可以增大这个值。高于此值,TCP拒绝分配socket

net.ipv4.ip_local_port_range = 1024 65000
默认:32768    60999
表示TCP/UDP协议允许使用的本地端口号

net.core.somaxconn = 16384
默认:128 
定义了系统中每一个端口最大的监听队列的长度, 超过这个数量就会导致链接超时或者触发重传机制,这是个全局的参数,默认值为128, 限制了接收新 TCP 连接侦听队列的大小。对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了。大多数环境这个值建议增加到 1024 或者更多。 服务进程会自己限制侦听队列的大小(例如 sendmail(8) 或者 Apache),常常在它们的配置文件中有设置队列大小的选项。大的侦听队列对防止拒绝服务 DoS 攻击也会有所帮助。

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


一些其它参数

net.ipv4.ip_forward = 0
默认:1
关闭IP转发

net.ipv4.tcp_slow_start_after_idle = 0
默认:1
关闭tcp的连接传输的慢启动,一个tcp连接在空闲后不进入slow start阶段,即每次收发数据都直接使用高速通道

kernel.sysrq = 0
默认:16
SysRq代表的是Magic System Request Key。开启了这个功能以后,只要内核没有挂掉,它就会响应你要求的任何操作。但是这需要内核支持(CONFIG_MAGIC_SYSRQ选项)。使用sysrq组合键是了解系统目前运行情况, 允许按住Alt + PrtSc键打印内核信息,除非是调试,一般要关闭此功能

net.ipv4.icmp_echo_ignore_all = 1
默认:0
禁止ping

kernel.msgmnb = 65536
默认:16384
每个消息队列的最大字节限制

kernel.msgmax = 65536    
默认:8192
从一个进程发送到另一个进程的消息的最大长度(bytes)。进程间的消息传递是在内核的内存中进行的,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量

kernel.shmmax = 68719476736    
默认:18446744073692774399
表示内核所允许的最大共享内存段的大小(bytes)

kernel.shmall = 4294967296    
默认:18446744073692774399
系统上可以使用的共享内存的总量(bytes)

net.ipv4.tcp_timestamps = 0
默认:1
时间戳可以避免序列号的卷绕。一个1Gbps 的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉


内核参数整理:
#关闭ipv6
net.ipv6.conf.all.disable_ipv6 = 1

#关闭路由转发
net.ipv4.ip_forward = 0

#最大限度使用物理内存
vm.swappiness = 0

#ARP缓存的存活时间
net.ipv4.neigh.default.gc_stale_time = 120

#ARP回应的级别
net.ipv4.conf.all.arp_announce = 2

#SYN重试次数
net.ipv4.tcp_syn_retries = 2

#SYNACK重试次数
net.ipv4.tcp_synack_retries = 2

#SYN_RECV状态队列的数量
net.ipv4.tcp_max_syn_backlog = 65535

#网口接收数据包比内核处理速率快状态队列的数量
net.core.netdev_max_backlog = 65535

#系统能处理的不属于任何进程的socket数量
net.ipv4.tcp_max_orphans = 65535

#tcp发送keepalive消息的频度
net.ipv4.tcp_keepalive_time = 600

#tcp发送keepalive探测确定连接已经断开的次数
net.ipv4.tcp_keepalive_probes = 3

#探测消息发送的频率
net.ipv4.tcp_keepalive_intvl = 15

#系统同时保持TIME_WAIT socket的数量
net.ipv4.tcp_max_tw_buckets = 36000

#开启TIME-WAIT sockets重用
net.ipv4.tcp_tw_reuse = 1

#TCP/UDP协议允许使用的本地端口号
net.ipv4.ip_local_port_range = 1024 65000

#每个端口最大的监听队列的数量
net.core.somaxconn = 65535

#关闭tcp的连接传输的慢启动
net.ipv4.tcp_slow_start_after_idle = 0

#关闭Magic System Request Key
kernel.sysrq = 0
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值