sysctl.conf文件详解

      最近正在学习Nginx,对于我这样没有基础的来讲,真的是举步维艰。但是每每我都鼓励自己勇敢的去接受新知识,相信一分耕耘一分收获!

     

      刚看到的一则新闻:From version 207 on, systemd will not apply the settings from /etc/sysctl.conf anymore: it will only apply those from /etc/sysctl.d/*.其实这对于我学习sysctl并无影响。因为/etc/下同时保留了sysctl.conf和sysctl.d。

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

      直接通过修改sysctl.conf文件来修改Linux内核参数,下面是我的配置:

fs.file-max = 999999

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_keepalive_time = 600

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_max_tw_buckets = 5000

net.ipv4.ip_local_port_range =1024    61000

net.ipv4.tcp_rmem =4096 32768 262142

net.ipv4.tcp_wmem =4096 32768 262142

net.core.netdev_max_backlog = 8096

net.core.rmem_default = 262144

net.core.wmem_default = 262144

net.core.rmem_max = 2097152

net.core.rmem_max = 2097152

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn_backlog = 1024

       解释一下sysctl.conf文件中参数的意义:

  • file-max:这个参数表示进程可以同时打开的最大句柄数,这个参数直接限制最大并发连接数。
  • tcp_tw_reuse:这个参数设置为1,表示允许将TIME-WAIT状态的socket重新用于新的TCP链接。这个对服务器来说很有意义,因为服务器上总会有大量TIME-WAIT状态的连接。
  • tcp_keepalive_time:这个参数表示当keepalive启用时,TCP发送keepalive消息的频度。默认是7200 seconds,意思是如果某个TCP连接在idle 2小时后,内核才发起probe。若将其设置得小一点,可以更快地清理无效的连接。
  • tcp_fin_timeout:这个参数表示当服务器主动关闭连接时,socket保持在FIN-WAIT-2状态的最大时间。
  • tcp_max_tw_buckets:这个参数表示操作系统允许TIME_WAIT套接字数量的最大值,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认是i180000,过多TIME_WAIT套接字会使Web服务器变慢。
  • tcp_max_syn_backlog:这个参数表示TCP三次握手建立阶段接受WYN请求队列的最大长度,默认1024,将其设置大一些可以使出现Nginx繁忙来不及accept新连接的情况时,Linux不至于丢失客户端发起的连接请求。
  • ip_local_port_range:这个参数定义了在UDP和TCP连接中本地端口的取值范围。
  • net.ipv4.tcp_rmem:这个参数定义了TCP接受缓存(用于TCP接收滑动窗口)的最小值,默认值,最大值。
  • net.ipv4.tcp_wmem:这个参数定义了TCP发送缓存(用于TCP发送滑动窗口)的最小值,默认值,最大值。
  • netdev_max_backlog:当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。这个参数表示该队列的最大值。
  • rmem_default:这个参数表示内核套接字接收缓存区默认的大小。
  • wmem_default:这个参数表示内核套接字发送缓存区默认的大小。
  • rmem_max:这个参数表示内核套接字接收缓存区默认的最大大小。
  • wmem_max:这个参数表示内核套接字发送缓存区默认的最大大小。

 

参考:

1.《深入理解Nginx模块开发与架构分析》

2. 51开源社区

     

     

你可能感兴趣的:(conf)