cent OS 7 内核参数调优

为什么80%的码农都做不了架构师?>>>   hot3.png


  • [1]net.core
#net.core.netdev_max_backlog = 30000
#进入包的最大设备队列.默认是1000

#net.core.optmem_max = 10240
#socket buffer的最大初始化值,默认20K.
 
#TCP数据发送窗口
#net.core.wmem_default = 109568
#默认212992
net.core.wmem_max = 16777216
默认212992
最大socket读buffer,可参考的优化值:873200
 
#TCP数据接收窗口(字节)
#net.core.rmem_default = 4194304
#默认212992
net.core.rmem_max = 4194304
默认212992
最大socket写buffer,可参考的优化值:873200

net.core.somaxconn = 256
listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能.可调整到256.


  • [2]net.ipv4
net.ipv4.ip_local_port_range = 1024 65535
表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65535。

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

net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 1200
表示当keepalive启用的时候,TCP发送keepalive消息的频度。缺省是2小时。意思是如果某个TCP连接在idle 2个小时后,
内核才发起probe.如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效.

net.ipv4.tcp_max_tw_buckets = 5000
表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
默认为8192,改为5000。

net.ipv4.tcp_mem = 98304 131072 196608
低于net.ipv4.tcp_mem[0]值,TCP没有内存压力.
低于net.ipv4.tcp_mem[1]值,进入内存压力阶段.
高于net.ipv4.tcp_mem[2]值,TCP拒绝分配socket.
上述内存单位是页,而不是字节.可参考的优化值是:196608 262144 327680【分别对应ram 768MB 1024MB 1280MB】

ps.得到页大小:
$ getconf PAGESIZE
4096

net.ipv4.tcp_synack_retries = 2
默认是5

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

net.ipv4.tcp_rmem = 4096 87380 16777216
TCP读buffer,可参考的优化值: 8192 436600 873200

net.ipv4.tcp_wmem = 4096 65536 16777216
TCP写buffer,可参考的优化值: 32768 436600 873200

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

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

net.ipv4.tcp_max_syn_backlog = 8192
表示SYN队列的长度,默认为128,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

net.ipv4.neigh.default.gc_stale_time = 120
默认值为60

#net.ipv4.conf.all.rp_filter=0

net.ipv4.conf.default.rp_filter = 0
默认是1

net.ipv4.conf.default.arp_announce = 2
默认是0
net.ipv4.conf.all.arp_announce = 2
默认是0

net.ipv4.conf.lo.arp_announce = 2
默认是0

net.ipv4.tcp_timestamps = 0
默认值是1

net.ipv4.tcp_window_scaling = 0
默认值是1

net.ipv4.tcp_sack = 0
默认值是1
  • [3]kernel
kernel.sem = 5010 641280 5010 128
默认值kernel.sem = 250    32000    32    128
第一列,max semaphores per array = 250,SEMMSL,表示每个信号集中的最大信号量数目,Oracle 建议将 SEMMSL 设置为 init.ora 文件中的最大PROCESS实例参数的设置值再加上10,并且不少于 100。

第二列,SEMMNS:用于控制整个 Linux 系统中信号(而不是信号集)的最大数。max semaphores system wide = 32000,表示系统范围内的最大信号量总数目。
Oracle 建议将 SEMMNS 设置为:系统中每个数据库的 PROCESSES 实例参数设置值的总和,
加上最大 PROCESSES 值的两倍,最后根据系统中 Oracle 数据库的数量,每个加10。使用以下计算式来确定在 Linux 系统中可以分配的信号的最大数量。它将是以下两者中较小的一个值:SEMMNS或 (SEMMSL * SEMMNI)

第三列,SEMOPM,max ops per semop call = 32,表示每个信号发生时的最大系统操作数目。用于控制每个semop系统调用可以执行的信号操作的数量。semop 系统调用(函数)提供了利用一个semop 系统调用完成多项信号操作的功能。
一个信号集能够拥有每个信号集中最大数量的SEMMSL信号,因此建议设置 SEMOPM 等于SEMMSL 。Oracle 建议将 SEMOPM 的值设置为不少于 100 。

第四列,max number of arrays = 128,SEMMNI,表示系统范围内的最大信号集总数目,Oracle 建议将 SEMMNI 的值设置为不少于 100 。
  • [4]vm
vm.swappiness = 10
默认值为30


  • [5]net.ipv6
net.ipv6.conf.all.disable_ipv6 = 1
默认值0
net.ipv6.conf.default.disable_ipv6 = 1
默认值0
net.ipv6.conf.lo.disable_ipv6 = 1
默认值0



























转载于:https://my.oschina.net/t0tem/blog/388397

你可能感兴趣的:(cent OS 7 内核参数调优)