• 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开源社区

         

         

  • 相关阅读:
    关于BlockingQueue
    关于java的线程
    mongodb的锁和高并发
    innodb的锁和高并发
    mysql的事务隔离级别及其使用场景
    mongodb分页
    ReentrantLock和Synchronized
    spring boot MVC
    svn 入门
    多线程的返回值等问题
  • 原文地址:https://www.cnblogs.com/Rosanna/p/3446557.html
Copyright © 2020-2023  润新知