内核参数的优化

Linux/proc/sys目录下存放着多数内核的参数,并且可以在系统运行 时进行更改,一般重新启动机器就会失效。而/etc/sysctl.conf是一个允许 改变正在运行中的Linux系统的接口,它包含一些TCP/IP堆栈和虚拟内 存系统的高级选项,修改内核参数永久生效。

/proc/sys下内核文件与配置文件sysctl.conf中变量存在着对应关系, 即修改sysct.conf配置文件,其实是修改/proc/sys相关参数,所以对Linux 内核优化只需修改/etc/sysctl.conf文件即可。以下为BAT企业生产环 境/etc/sysct.conf内核参数:

net. ipv4. ip_forward=0
net, ipv4. conf. default, rp filter=1
net. ipv4. conf. default. accept_source_route=0
kernel. sysrg=0
kernel. core uses pid=1
net. ipv4. tcp_syncookies=1
kernel. msgmnb=65536
kernel. msqgmax =65536
kernel. shnmax=68719476736
kernel. shnal1=4294967296
net. ipv4. tcp_max_tw_buckets =10000
net. ipv4. tcp sack=1
net. ipvd. tcp window scaling=1
net. ipv4. tcp_rmen=4096 87380 4194304
net. ipv4. tcp_wmen·4096 16384 4194304
net. core, wnen default =8388608
net. core. raem_default =8388608
net. core. rmen_max=16777216
net. core, waell max=16777216
net. core. netdev_max backlog =262144
net. core. somaxconn=262144
net. ipv4. tcp aax orphans =3276800
net. ipv4. tcp nax syn backlog =262144
net. ipvd. tcp timestamps=0
net. ipv4. tcp synack retries=1
net. ipv4. tcp syn retries=1
net. ipv4. tcp tw_recycle=1
net. ipv4. tcp_tw reuse=1
net, ipv4. tcp_nem =94500000 915000000927000000
net. ipv4. tcpfin tineout=1
net, ipv4. tcp keepalive tine=30
net. ipv4. ip_local_port_range=1024 65535

Linux内核常见参数详解如下:

  • net.ipv4.tcp_timestamps=1:该参数控制RFC 1323时间戳与窗口 缩放选项。
  • net.ipv4.tcp_sack=1:选择性应答(SACK)是TCP的一项可选特 性,可以提高某些网络中所有可用带宽的使用效率。
  • net.ipv4.tcp_fack=1:打开FACK(forward ACK)拥塞避免和快速 重传功能。
  • net.ipv4.tcp_retrans_collapse=1:打开重传重组包功能,为0的 时候关闭重传重组包功能。
  • net.ipv4.tcp_syn_retries=5:对于一个新建连接,内核要发送多 少个SYN连接请求才决定放弃。
  • net.ipv4.tcp_synack_retries=5:tcp_synack_retries显示或设定 Linux在回应SYN要求时尝试多少次重新发送初始SYN,ACK封包后才 决定放弃。
  • net.ipv4.tcp_max_orphans=131072:系统所能处理不属于任何 进程的TCP sockets最大数量。
  • net.ipv4.tcp_max_tw_buckets=5000:系统同时保持TIME_WAIT 套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被 清除并打印警告信息,默认为180000,设为较小数值此项参数可以控制 TIME_WAIT套接字的最大数量,避免服务器被大量的TIME_WAIT套接 字拖死。
    • net.ipv4.tcp_keepalive_time=30
    • net.ipv4.tcp_keepalive_probes=3
    • net.ipv4.tcp_keepalive_intvl=3
    • 如果某个TCP连接在空闲30s后,内核才发起p robe(探查),若 probe 3次(每次3s)即tcp_keepalive_intvl值不成功,内核才彻底放弃, 认为该连接已失效。
  • net.ipv4.tcp_retries1=3:放弃回应一个TCP连接请求前,需要进 行多少次重试。
  • net.ipv4.tcp_retries2=15:在丢弃激活(已建立通信状况)的 TCP连接之前,需要进行多少次重试。
  • net.ipv4.tcp_fin_timeout=30:表示如果套接字由本端要求关 闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
  • net.ipv4.tcp_tw_recycle=1:表示开启TCP连接中TIME_WAIT sockets的快速回收,默认为0,表示关闭。
  • net.ipv4.tcp_max_syn_backlog=8192:表示SYN队列的长度,默 认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
  • net.ipv4.tcp_syncookies=1:TCP建立连接的3路握手过程中,当 服务端收到最初的SYN请求时,会检查应用程序的syn_backlog队列是否 已满。启用syncookie,可以解决超高并发时的“can't connect”问题,但是 会导致TIME_WAIT状态fallback为保持2MSL时间,高峰期时会导致客 户端无可复用连接而无法连接服务器。
  • net.ipv4.tcp_orphan_retries=0:关闭TCP连接之前重试多少次。
  • net.ipv4.tcp_mem=178368 237824 356736:net.ipv4.tcp_mem[0] 表示低于此值,TCP没有内存压力,net.ipv4.tcp_mem[1]表示在此值 下,进入内存压力阶段,net.ipv4.tcp_mem[2]表示高于此值,TCP拒绝 分配socket。
  • net.ipv4.tcp_tw_reuse=1:表示开启重用,允许将TIME_WAIT sockets重新用于新的TCP连接。
  • net.ipv4.ip_local_port_range=102465000:表示用于向外连接的 端口范围。
  • net.ipv4.ip_conntrack_max=655360:在内核内存中netfilter可以 同时处理的“任务”(连接跟踪条目)。
  • net.ipv4.icmp_ignore_bogus_error_responses=1:开启恶意icmp 错误消息保护。
  • net.ipv4.tcp_syncookies=1:开启SYN洪水攻击保护。

发表评论

后才能评论