内核参数整理

    xiaoxiao2021-12-10  22

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

    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 来关闭程序来造成的,后续优化改进。

    转载请注明原文地址: https://ju.6miu.com/read-700061.html

    最新回复(0)