zoukankan      html  css  js  c++  java
  • linux内核调优详解

     1 cat > /etc/sysctl.conf << EOF
     2 net.ipv4.ip_forward = 0        
     3 net.ipv4.conf.all.rp_filter = 1
     4 net.ipv4.conf.default.rp_filter = 1
     5 net.ipv4.conf.default.accept_source_route = 0
     6 kernel.sysrq = 0
     7 kernel.core_uses_pid = 1
     8 net.bridge.bridge-nf-call-ip6tables = 0
     9 net.bridge.bridge-nf-call-iptables = 0
    10 net.bridge.bridge-nf-call-arptables = 0
    11 kernel.msgmnb = 65536
    12 kernel.msgmax = 65536
    13 kernel.shmmax = 68719476736
    14 kernel.shmall = 4294967296
    15 net.ipv6.conf.all.disable_ipv6 = 1
    16 net.ipv6.conf.default.disable_ipv6 = 1
    17 net.ipv4.neigh.default.gc_stale_time = 120
    18 net.ipv4.conf.default.arp_announce = 2
    19 net.ipv4.conf.all.arp_announce = 2
    20 net.ipv4.conf.lo.arp_announce = 2
    21 ###内存资源使用相关设定
    22 net.core.wmem_default = 8388608 
    23 net.core.rmem_default = 8388608 
    24 net.core.rmem_max = 16777216 
    25 net.core.wmem_max = 16777216 
    26 net.ipv4.tcp_rmem = 4096 65536 16777216
    27 net.ipv4.tcp_wmem = 4096 65536 16777216     
    28 net.ipv4.tcp_mem = 8388608 8388608 8388608
    29 ##应对DDOS攻击,TCP连接建立设置
    30 net.ipv4.tcp_syncookies = 1
    31 net.ipv4.tcp_synack_retries = 1 
    32 net.ipv4.tcp_syn_retries = 1 
    33 net.ipv4.tcp_max_syn_backlog = 262144
    34 ##应对timewait过高,TCP连接断开设置
    35 net.ipv4.tcp_max_tw_buckets = 10000 
    36 net.ipv4.tcp_tw_recycle = 1 
    37 net.ipv4.tcp_tw_reuse = 1 
    38 net.ipv4.tcp_timestamps = 0 
    39 net.ipv4.tcp_fin_timeout = 5
    40 net.ipv4.ip_local_port_range = 4000 65000
    41 ###TCP keepalived 连接保鲜设置
    42 net.ipv4.tcp_keepalive_time = 1200
    43 net.ipv4.tcp_keepalive_intvl = 15
    44 net.ipv4.tcp_keepalive_probes = 5
    45 ###其他TCP相关调节
    46 net.core.somaxconn = 262144
    47 net.core.netdev_max_backlog = 262144  
    48 net.ipv4.tcp_max_orphans = 3276800
    49 net.ipv4.tcp_sack = 1
    50 net.ipv4.tcp_window_scaling = 1
    51 EOF

    net.ipv4.ip_forward = 0                                         表示开启路由功能,0是关闭,1是开启

    net.ipv4.conf.all.rp_filter=1                                    则是"告诉"kernel加强入站过滤(ingress filtering)和出站过滤(egress filtering)

    net.ipv4.conf.default.rp_filter = 1                            开启反向路径过滤

    net.ipv4.conf.default.accept_source_route = 0      处理无源路由的包

    kernel.sysrq = 0                                                      控制系统调试内核的功能要求

    kernel.core_uses_pid = 1                                       用于调试多线程应用程序

    kernel.msgmnb = 65536                                        所有在消息队列中的消息总和的最大值(msgmnb=64k)

    kernel.msgmax = 65536                                        指定内核中消息队列中消息的最大值(msgmax=64k)

    kernel.shmmax = 68719476736                            是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理内存-1byte。例如,如果为64GB物理内存,可取64*1024*1024*1024-1=68719476735

    kernel.shmall = 4294967296                                   该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是 16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求(几乎是原来设置2097152的两倍)

    net.ipv4.conf.default.arp_announce

    定义不同程序的限制,宣布本地IP地址和IP数据包中的ARP协议要求发出的接口:
    0-(默认)使用任何本地地址,上配置任何接口。 
    1- 尽量避免本地地址不属于目标的子网掩码这个接口的,这种模式是有用的当地到达目标主机需要通过这个接口的源IP地址的ARP协议要求的一部分,其逻辑网络上配置接受接口,当我们出现需求,我们将检查所有的子网,包括我们的目标将维持原地址,如果没有这样的子网,我们根据地址规则选择2. 
    2-始终使用当地最好的解决这一目标。在这种模式下,我们忽视了源地址的IP数据包,并尝试选择本地地址的,我们希望会谈的目标主机。这些地方是选中的地址寻找小学的所有IP地址的子网的接口,其中包括即将离任的目标IP地址。如果没有合适的本地地址是发现我们选择第一个本地地址,我们对即将离任的接口或其他所有的接口,希望我们将得到答复我们的要求

    net.core.wmem_default = 8388608      为TCP socket预留用于发送缓冲的内存默认值(单位:字节)一般要低于net.core.wmem_default的值。默认值为16384(16K)。

    net.core.rmem_default = 8388608        为TCP socket预留用于接收缓冲的内存默认值(单位:字节)net.core.rmem_max = 16777216           为TCP socket预留用于接收缓冲的内存最大值(单位:字节)net.core.wmem_max = 16777216          TCP socket预留用于发送缓冲的内存最大值(单位:字节)net.ipv4.tcp_rmem = 4096 65536 16777216                   接收窗口的最大大小

    net.ipv4.tcp_wmem = 4096 65536 16777216                  默认的接收窗口大小,默认值为4096(4K) 
    net.ipv4.tcp_mem = 94500000 915000000 927000000   net.ipv4.tcp_mem[0]:低于此值,TCP 没有内存压力。net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段。net.ipv4.tcp_mem[2]:高于此值,TCP 拒绝分配socket。上述内存单位是页,而不是字节

    net.ipv4.tcp_syncookies = 1                    只有在内核编译时选择了CONFIG_SYNCOOKIES时才会发生作用。当出现syn等候队列出现溢出时象对方发送syncookies。目的是为了防止syn flood攻击。

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

    net.ipv4.tcp_syn_retries = 1                      在内核放弃建立连接之前发送SYN 包的数量net.ipv4.tcp_max_syn_backlog = 262144  表示SYN队列的长度,默认为1024,加大队列长度为262144,可以容纳更多等待连接的网络连接数。

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

    net.ipv4.tcp_tw_recycle = 1                       表示开启TCP连接中TIME-WAIT sockets的快速收回功能,默认为 0 ,表示关闭。

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

    net.ipv4.tcp_timestamps = 0                      时间戳可以避免序列号的卷绕

    net.ipv4.tcp_fin_timeout = 5                      表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60  秒。2.2 内核的通常值是180 秒,3你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB  服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2 的危险性比FIN-WAIT-1 要小,因为它最多只能吃掉1.5K  内存,但是它们的生存期长些。

    net.ipv4.ip_local_port_range = 4000 65000      表示用于向外连接的端口范围

    net.ipv4.tcp_keepalive_time = 1200       表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟

    net.ipv4.tcp_keepalive_intvl = 15           当探测没有确认时,重新发送探测的频度。缺省是75秒。net.ipv4.tcp_keepalive_probes = 5         在认定连接失效之前,发送多少个TCP的keepalive探测包。缺省值是9。这个值乘以tcp_keepalive_intvl之后决定了,一个连接发送了keepalive之后可以有多少时间没有回应

    net.core.somaxconn = 262144                listen(函数)的默认参数,挂起请求的最大数量限制。web 应用中listen 函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而nginx 定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值

    net.core.netdev_max_backlog = 262144  每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目net.ipv4.tcp_max_orphans = 3276800
    net.ipv4.tcp_sack = 1                                 有选择的应答,1表示yes ,0表示nonet.ipv4.tcp_window_scaling = 1           支持更大的TCP窗口。 如果TCP窗口最大超过65535(64K), 必须设置该数值为1

  • 相关阅读:
    Photoshop 基础七 位图 矢量图 栅格化
    Photoshop 基础六 图层
    Warfare And Logistics UVALive
    Walk Through the Forest UVA
    Airport Express UVA
    Guess UVALive
    Play on Words UVA
    The Necklace UVA
    Food Delivery ZOJ
    Brackets Sequence POJ
  • 原文地址:https://www.cnblogs.com/dcc001/p/5810552.html
Copyright © 2011-2022 走看看