内核参数整理

以下内核参数未做相关优化,均使用系统默认值

net.ipv4.tcp_mem = 196608 262144  393216

net.core.wmem_max = 131071

net.core.rmem_max = 131071

net.ipv4.tcp_wmem = 4096  16384  4194304

net.ipv4.tcp_rmem = 4096 87380 4194304

net.ipv4.tcp_tw_reuse = 0

net.ipv4.tcp_tw_recycle = 0

net.ipv4.tcp_retries2 = 15

net.ipv4.tcp_keepalive_intvl = 75

net.ipv4.tcp_keepalive_probes = 9

net.ipv4.tcp_max_tw_buckets = 180000

net.ipv4.ip_local_port_range = 32768    61000

net.core.somaxconn = 128

kernel.sem = 250 32000 32 128

net.ipv4.conf.lo.arp_accept = 0

net.ipv4.conf.lo.arp_ignore = 0

net.ipv4.conf.lo.arp_announce = 0

net.ipv4.conf.lo.arp_filter = 0

net.ipv4.conf.all.arp_accept = 0

net.ipv4.conf.all.arp_ignore = 0

net.ipv4.conf.all.arp_announce = 0

net.ipv4.conf.all.arp_filter = 0

net.ipv4.neigh.default.gc_thresh1 = 128

net.ipv4.neigh.default.gc_thresh2 = 512

net.ipv4.neigh.default.gc_thresh3 = 1024

net.ipv4.ip_conntrack_max = 65536

net.ipv4.netfilter.ip_conntrack_max = 65536

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 432000

net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120

net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60

net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

net.ipv4.netfilter.ip_conntrack_tcp_timeout_max_retrans = 300

net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 10

net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 30

net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60

net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120

kernel.sem = 250 32000 32 128

 

下面是各个参数详细配置情况及其含义:

内存&缓存

vm.swappiness = 10

配置方式:

在文件/etc/rc.local配置 echo 10 > /proc/sys/vm/swappiness

含义:

swappiness的值的大小对如何使用swap分区是有着很大的联系的。

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

swappiness100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到 swap空间里面。

两个极端,对于centos linux 5的默认设置,这个值等于60,建议修改为10

 

kernel.shmmax = 68719476736

配置方式:

/etc/sysctl.conf配置kernel.shmall = 4294967296

含义:

定义了共享内存段的最大尺寸(以字节为单位)

 

kernel.shmall = 4294967296

配置方式:

/etc/sysctl.conf配置kernel.shmall = 4294967296

含义:

表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。

 

net.ipv4.tcp_mem = 196608 262144  393216

系统默认值,SA未优化

含义

net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力.

net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段.

net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket

 

net.core.wmem_max = 131071

系统默认参数,SA未优化

含义:

最大socketbuffer


net.core.rmem_max = 131071

系统默认参数,SA未优化

含义:

最大socketbuffer

 

net.ipv4.tcp_wmem = 4096  16384  4194304

系统默认参数,SA未优化

含义:

TCPbuffer

 

net.ipv4.tcp_rmem = 4096 87380 4194304

系统默认参数,SA未优化

含义:

TCPbuffer

 

kernel.msgmnb = 65536

配置方式:

/etc/sysctl.conf配置kernel.msgmnb = 65536

含义:

每个消息队列的最大字节限制

 

kernel.msgmax = 65536

配置方式:

/etc/sysctl.conf配置kernel.msgmax = 65536

含义:

每个消息的最大size

TCP/IP相关

net.ipv4.tcp_syncookies = 1

配置方式:

/etc/sysctl.conf配置net.ipv4.tcp_syncookies = 1

含义:

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

 

net.ipv4.tcp_synack_retries = 3

/etc/sysctl.conf配置net.ipv4.tcp_synack_retries = 3

含义:

为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYNACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。

 

net.ipv4.tcp_syn_retries = 2

/etc/sysctl.conf配置net.ipv4.tcp_syn_retries = 2

含义:

在内核放弃建立连接之前发送SYN包的数量

 

net.ipv4.tcp_tw_reuse = 0

系统默认值,SA未优化

含义:

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

 

net.ipv4.tcp_tw_recycle = 0

系统默认值,SA未优化

含义:

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

 

net.ipv4.tcp_fin_timeout = 6

配置方式:

内核源码中修改相关参数

含义:

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

 

net.ipv4.tcp_keepalive_time = 1800

配置方式:

内核中做了修改(与httpdnginxweb 应用程序有关)

含义:

表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为30分钟。

 

net.ipv4.tcp_max_syn_backlog = 20480

配置方式:

在文件/etc/sysctl.conf中设置net.ipv4.tcp_max_syn_backlog = 20480

含义:

进入SYN包的最大请求队列.默认1024.对重负载服务器,增加该值显然有好处.

 

net.ipv4.tcp_retries2 = 15

系统默认值,SA未修改

含义:

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

 

net.ipv4.tcp_keepalive_intvl = 75

net.ipv4.tcp_keepalive_probes = 9

系统默认配置,SA未配置

含义:

如果某个TCP连接在idle 30分钟后,内核才发起探测(probe).如果probe 9(每次75)不成功,内核才彻底放弃,认为该连接已失效.

 

net.ipv4.tcp_max_tw_buckets = 180000

系统默认值,SA未配置

含义:

表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。对于ApacheNginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

随机端口

net.ipv4.ip_local_port_range = 32768  61000

系统默认参数,SA未优化

含义:

表示用于向外连接的端口范围。缺省情况下很小:3276861000,改为1024065000

core

net.core.somaxconn = 128

系统默认设置,SA未配置

含义:

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

 

net.core.netdev_max_backlog = 1000

配置方式

内核中修改

含义:

进入包的最大设备队列.默认是300,对重负载服务器而言,该值太低,可调整到2000.

 

kernel.core_pattern = core-%e-%p-%s-%t

配置方式:

在文件/etc/sysctl.conf中设置kernel.core_pattern = core-%e-%p-%s-%t

含义:

当系统中的一些程序在遇到一些错误以及crash时,系统会自动产生core file记录crash时刻系统信息包括内存和寄存器信息,用以程序员日后debug时可以使用

文件描述符

ulimit -Hn 10240

ulimit -n 10240

配置方式:

在文件/etc/rc.local中设置,开机启动时设置

ARP

net.ipv4.conf.lo.arp_accept = 0

net.ipv4.conf.lo.arp_ignore = 0

net.ipv4.conf.lo.arp_announce = 0

net.ipv4.conf.lo.arp_filter = 0

net.ipv4.conf.all.arp_accept = 0

net.ipv4.conf.all.arp_ignore = 0

net.ipv4.conf.all.arp_announce = 0

net.ipv4.conf.all.arp_filter = 0

开启arp响应,在使用lvs开源负载均衡时候,需要关闭serverarp响应,因公司使用F5设备,vipserverIP在不同网段,故不需要关闭arp响应

 

net.ipv4.neigh.default.gc_thresh1 = 128

系统默认设置,SA未配置

含义:

存在于ARP高速缓存中的最少层数,如果少于这个数,垃圾收集器将不会运行。缺省值是128

 

net.ipv4.neigh.default.gc_thresh2 = 512

系统默认设置,SA未配置

含义:

保存在 ARP 高速缓存中的最多的记录软限制。垃圾收集器在开始收集前,允许记录数超过这个数字 5 秒。缺省值是 512

 

net.ipv4.neigh.default.gc_thresh3 = 1024

系统默认设置,SA未配置

含义:

保存在 ARP 高速缓存中的最多记录的硬限制,一旦高速缓存中的数目高于此,垃圾收集器将马上运行。缺省值是1024

 以上三个参数,当内核维护的arp表过于庞大时候,可以考虑优化

iptables

net.ipv4.ip_conntrack_max = 65536

net.ipv4.netfilter.ip_conntrack_max = 65536

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 432000

net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120

net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60

net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

net.ipv4.netfilter.ip_conntrack_tcp_timeout_max_retrans = 300

net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 10

net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 30

net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60

net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120

以上iptables参数均是系统默认参数,因为目前系统不使用iptables,故可以不考虑


信号量相关

kernel.sem = 250 32000 32 128

系统默认值,SA未优化

含义:

# ipcs -ls

------ Semaphore Limits --------

max number of arrays = 128

max semaphores per array = 250

max semaphores system wide = 32000

max ops per semop call = 32

semaphore max value = 32767

SEMMNI

SEMMNI定义了max number of arrays的大小,表示系统内的最大semaphore set大小,这个缺省值128差不多了.

SEMMSL

SEMMSL 定义了max semaphores pre array的大小,表示每个semaphore set的最大semaphore.oracle进程获得系统的一个semaphore set,oracle进程内的每个线程需要一个semaphore,假如你的系统内只有一个oracle实例,你的SEMMSL的值需要等于或稍大于 (oracle中定义的最大PROCESSES+10),如果是MTS模式,可以适当放小.

SEMMNS

SEMMNS定义 max semaphores system wide的大小,表示系统内允许的最大semaphore set大小,系统缺省大小为(SEMMNI*SEMMSL),oracle推荐的设置为系统内所有数据库的PROCESSES参数的总和,加上最大的的那个PROCESSES,然后加上10.

SEMOPM

SEMOPM定义了每个semop系统调用能够操作的最大semaphore,semop系统调用主要是一个semaphore setsemaphore操作,这个值系统缺省为32,建议设置等于SEMMSL.

另:

Httpd重启失败,信号量过多,是因为我们关闭apache的时候使用了kill -9 来关闭程序来造成的,后续优化改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值