服务器操作系统调优内核参数(方便查询)
fs.aio-max-nr=1048576
#此参数限制并发未完成的异步请求数目,应该设置避免I/O子系统故障
fs.file-max=1048575
#该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量
fs.inotify.max_user_watches=8192000
#表示每一个real user ID可创建的inotify instatnces的数量上限,默认128
kernel.core_pattern=core_%e
#这里所说的core_pattern 指的是:/proc/sys/kernel/core_pattern.
kernel.msgmax=65535
#该文件指定了从一个进程发送到另一个进程的消息最大长度,进程间的消息传递是在内核的内存中进行的。不会交换到硬盘上。所以如果增加该值,则将增加操作系统所使用的内存数量。
kernel.msgmnb=65535
#该文件指定在一个消息队列中最大的字节数 缺省设置:16384
kernel.panic=1
#该文件表示如果发生"内核严重错误(kernel panic)",则内核在重新引导之前等待的时间(以秒为单位)。
0秒设置在内发生内核严重错误时将禁止重新引导。缺省值:0
kernel.printk=3 3 1 3
#该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。默认设置:6 4 1 7
该文件4个值为:
控制台日志级别:优先级高于该值的消息将打印值控制台
缺省消息日志级别:用该优先级来打印没有优先级的消息
最低控制台日志级别:控制台日志级别可被设置最小值(最高优先级)
缺省控制台日志级别:控制台日志级别的缺省值
kernel.shmall=7549746
#该参数表示统一一次可以使用的共享内存总量(以页为单位)。默认是2097152
kernel.shmmax=30923764530
#该参数定义了共享内存段的最大尺寸(以字节为单位),默认是32M,优化设置28M。
kernel.sysrq=0
#如果该文件指定的值为非0,则激活sysctem request key。默认值:0
kernel.watchdog_thresh=30
#30秒内watchdog线程都没有被调度到,就会触发软锁(soft lockup)
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.core.netdev_max_backlog=500000
##当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包,这个参数表示该队列的最大值。
net.core.rmem_default=8388608
#接收套接字缓冲区大小的默认值(以字节为单位)
net.core.rmem_max=16777216
#接收套接字缓冲区大小的最大值(以字节为单位)
net.core.somaxconn=65535
#用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制
net.core.wmem_default=8388608
#发送套接字缓冲区大小的默认值(以字节为单位)
net.core.wmem_max=16777216
#发送套接字缓冲区大小的最大值(以字节为单位)
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
#关闭反向路径过滤
net.ipv4.ip_forward=1
#开启包过滤功能
net.ipv4.ip_local_port_range=1024 65535
#对外连接端口范围
net.ipv4.tcp_fin_timeout=30
#减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接
net.ipv4.tcp_keepalive_intvl=30
#探测消息未获得响应时,重发该消息的间隔时间(秒),系统默认75秒
net.ipv4.tcp_keepalive_probes=3
#在认定连接失效之前,发送多少个TCP的keepalive探测包。系统默认值是9。这个值乘以tcp_keepalive_intvl之后决定了,一个连接发送了keepalive探测包之后可以有多少时间没有回应
net.ipv4.tcp_keepalive_time=1200
#这个参数表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,若将其设置得小一些,可以更快地清理无效的连接
net.ipv4.tcp_max_orphans=3276800
#表示系统中最多有多少TCP套接字不被关联到任何一个用户文件句柄上。如果超过这里设置的数字,连接就会复位并输出警告信息。这个限制仅仅是为了防止简单的DoS攻击。此值不能太小
net.ipv4.tcp_max_syn_backlog=819200
#表示那些尚未收到客户端确认信息的连接(SYN消息)队列的长度,默认为1024,加大队列长度为262144,可以容纳更多等待连接的网络连接数
net.ipv4.tcp_max_tw_buckets=262144
#表示系统同时保持TIME_WAIT套接字的最大数量。如果超过此数,TIME_WAIT套接字会被立刻清除并且打印警告信息,
之所以要设定这个限制,纯粹为了抵御那些简单的DoS攻击,不过,过多的TIME_WAIT套接字也会消耗服务器资源,甚至死机。
net.ipv4.tcp_mem=94500000 915000000 927000000
#确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)
第一个值是内存使用的下限;
第二个值是内存压力模式开始对缓冲区使用应用压力的上限;
第三个值是内存使用的上限
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 16384 16777216
# 增加TCP最大缓冲区大小
net.ipv4.tcp_syncookies=1
#开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理
net.ipv4.tcp_thin_linear_timeouts=1
#重传超时后要检查tcp stream是不是thin(less than 4 packets in flight),默认是0不开启
net.ipv4.tcp_timestamps=1
#时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号,时间戳能够让内核接受这种“异常”的数据包。
net.ipv4.tcp_tw_reuse=1
#开启TCP连接复用功能,允许将time_wait sockets重新用于新的TCP连接(主要针对time_wait连接)
net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6=0
net.ipv6.conf.lo.disable_ipv6=0
net.netfilter.nf_conntrack_max=655350
net.netfilter.nf_conntrack_tcp_timeout_established=600
#修改防火墙表大小
net.unix.max_dgram_qlen=30000
#UDP队列里数据报的最大个数
vm.max_map_count=262144
#限制一个进程可以拥有的VMA(虚拟内存区域)的数量
vm.min_free_kbytes=1048576
#保留内存的最低值
vm.panic_on_oom=0
#发生oom时,自动转换为panic
vm.swappiness=20
#数值(0-100)越高,越可能发生swap交换