Linux 内核参数


可用sysctl来管理,变量的设置通常是字符串、数字或者布尔型。 (布尔型用 1 来表示“yes”,用 0 来表示“no”)

获取
sysctl net.core.somaxconn
写入
sysctl -w net.core.somaxconn=512
应用
sysctl -p

配置文件修改
/etc/sysctl.conf

kernel.sysrq

1:启用,激活键盘上的sysrq按键。这个按键用于给内核传递信息,用于紧急情况下重启系统,当遇到死机或者没有响应的时候,甚至连 tty 都进不去,可以尝试用 SysRq
重启计算机。在终端上同时按Alt, SysRq和命令键则会执行SysRq命令, SysRq键就是”Print Screen”健. 比如Alt+SysRq+b则重启机器

kernel.core_uses_pid

1:Core文件的文件名添加应用程序pid做为扩展

kernel.core_pattern

指定core文件生成的位置和文件名规则,/tmp/core-%e-%s-%u-%g-%p-%t

kernel.msgmnb

单个消息队列中允许的最大字节长度(限制单个消息队列中所有消息包含的字节数之和)

kernel.msgmax

消息队列中单个消息的最大字节数

kernel.shmmax

系统所允许的最大共享内存段的大小(以字节为单位)

kernel.shmall

系统上可以使用的共享内存的总量(以字节为单位)

vm.swappiness

调整内存参数,当内存使用率不足0%(开始是默认值60) 时在使用swap,尽量避免使用swap,减少唤醒软中断进程kswapd,从而降低kswapd 进程对cpu的占用。
swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面

net.ipv4.conf.default.rp_filter = 1

1:通过反向路径回溯进行源地址验证(在RFC1812中定义)。对于单穴主机和stub网络路由器推荐使用该选项
0:不通过反向路径回溯进行源地址验证。

net.ipv4.conf.default.accept_source_route

处理无源路由的包

net.core.wmem_default

设置发送的socket缺省缓存大小(字节)

net.core.rmem_default

设置接收socket的缺省缓存大小(字节)

net.core.rmem_max

设置接收socket的最大缓存大小(字节)

net.core.wmem_max

设置发送的socket最大缓存大小(字节)

net.core.netdev_max_backlog

网卡设备将请求放入队列的长度,设置当个别接口接收包的速度快于内核处理速度时允许的最大的包序列

net.core.somaxconn

定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。
表示socket监听(listen)的backlog上限。backlog是socket的监听队列,当一个请求(request)尚未被处理或建立时,他会进入backlog。
而socket server可以一次性处理backlog中的所有请求,处理后的请求不再位于监听队列中。当server处理请求较慢,以至于监听队列被填满后,新来的请求会被拒绝。

net.core.optmem_max

表示每个socket所允许的最大缓冲区的大小(字节)

net.ipv4.ip_forward

路由转发功能,1为开启

net.ipv4.tcp_syncookies

1:打开SYN洪水攻击保护

net.ipv4.tcp_max_tw_buckets = 60000

系统在同时所处理的最大timewait sockets 数目。如果超过此数的话,time-wait socket 会被立即砍除并且显示警告信息

net.ipv4.tcp_sack

表示是否启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以
让发送者只发送丢失的报文段);(对于广域网通信来说)这个选项应该启用,但是这 会增加对 CPU 的占用。

net.ipv4.tcp_window_scaling

表示设置tcp/ip会话的滑动窗口大小是否可变,1:可变

net.ipv4.tcp_max_orphans

系统所能处理不属于任何进程的TCP sockets最大数量。假如超过这个数量,那么不属于任何进程的连接会被立即reset,
并同时显示警告信息。之所以要设定这个限制,纯粹为了抵御那些简单的 DoS 攻击,千万不要依赖这个或是人为的降低这个限制。

net.ipv4.tcp_max_syn_backlog

对于那些依然还未获得客户端确认的连接请求,需要保存在队列中最大数目。 默认值是1024,可提高到2048。

net.ipv4.tcp_timestamps

表示是否启用以一种比超时重发更精确的方法(请参阅 RFC 1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项。 0:不启用 1:启用

net.ipv4.tcp_synack_retries

syn-ack握手状态重试次数,默认5,遭受syn-flood攻击时改为1或2。这是三次握手的 第二个步骤。值必须为正整数,并不能超过 255。因为每一次重新发送封包都会耗费
约 30 至 40 秒去等待才决定尝试下一次重新发送或决定放弃。缺省值为 5,即每一个连线要在约 180 秒 (3 分钟) 后才确定逾时。

net.ipv4.tcp_syn_retries

表示本机向外发起TCP SYN连接超时重传的次数,不应该高于255;该值仅仅针对外出的连接,对于进来的连接由tcp_retries1控制。

net.ipv4.tcp_tw_recycle

打开快速 TIME-WAIT sockets 回收。默认为0,表示关闭

net.ipv4.tcp_tw_reuse

是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接,即开启重用。默认为0,表示关闭;

net.ipv4.tcp_mem = low presure high

保存了三个值,分别是
low:当TCP使用了低于该值的内存页面数时,TCP不会考虑释放内存。
presure:当TCP使用了超过该值的内存页面数量时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure状态。
high:允许所有tcp sockets用于排队缓冲数据报的页面量。

net.ipv4.tcp_rmem = Min Default Max

增加TCP最大缓冲区大小 此文件中保存有三个值,分别是
Min:为TCP socket预留用于接收缓冲的内存最小值。每个tcp socket都可以在建立后使用它。 即使在内存出现紧张情况下tcp socket都至少会有这么多数量的内存用于接收缓冲
Default:为TCP socket预留用于接收缓冲的内存数量,默认情况下该值会影响 其它协议使用的net.core.rmem_default 值,一般要低于net.core.rmem_default的值。
该值决定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win=0默认值情况下,TCP窗口大小为65535。
Max:用于TCP socket接收缓冲的内存最大值。该值不会影响net.core.rmem_max,”静态”选择参数SO_SNDBUF则不受该值影响。

net.ipv4.tcp_wmem = Min Default Max

增加TCP最大缓冲区大小 此文件中保存有三个值,分别是
Min:为TCP socket预留用于发送缓冲的内存最小值。每个tcp socket都可以在建立后使用它。
Default:为TCP socket预留用于发送缓冲的内存数量,默认情况下该值会影响 其它协议使用的net.core.wmem_default 值,一般要低于net.core.wmem_default的值。
Max:用于TCP socket发送缓冲的内存最大值。该值不会影响net.core.wmem_max,”静态”选择参数SO_SNDBUF则不受该值影响。

如果指定了tcp_wmem,则net.core.wmem_default被tcp_wmem的覆盖。send Buffer在tcp_wmem的最小值和最大值之间自动调整。
如果调用setsockopt()设置了socket选项SO_SNDBUF,将关闭发送端缓冲的自动调节机制,tcp_wmem将被忽略,SO_SNDBUF的最大值由net.core.wmem_max限制

net.ipv4.tcp_keepalive_time

表示从最后一个包结束后多少秒内没有活动, 才发送keepalive包保持连接,默认7200s,理想可设为1800s,即如果非正常断开,1800s后可通过keepalive知道。

net.ipv4.tcp_keepalive_intvl

表示发送TCP探测的频率,乘以tcp_keepalive_probes表示断开没有相应的TCP连接的时间。

net.ipv4.tcp_keepalive_probes

表示丢弃TCP连接前,进行最大TCP保持连接侦测的次数。保持连接仅在SO_KEEPALIVE套接字选项被打开时才被发送。

net.ipv4.tcp_fin_timeout

表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。默认值为 60 秒。

net.ipv4.ip_local_port_range = 1024 65535

本地发起连接时使用的端口范围,tcp初始化时会修改此值

net.ipv4.ip_local_reserved_ports = 16001,19001,…

规划出一段端口段预留作为服务的端口,避免被随机端口给占用掉。

fs.nr_open

单个进程可分配的最大文件数

fs.file-max

表示系统级别的能够打开的文件句柄的数量。是对整个系统的限制,并不是针对用户的


文章作者: 江湖义气
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 江湖义气 !
  目录