Linux系统配置常用参数说明
更新时间:2022-12-01
本文档将列出 Linux 操作系统常用的参数配置以及相应说明。
文件句柄限制
在大流量的业务场景下,可以调整以下内核设置和内置限制,以占用部分系统内存的代价来处理更大的量。
设置 | 允许的值/间隔 | 默认 | 说明 |
---|---|---|---|
fs.file-max |
8192-12000500 | 709620 | Linux 内核将分配的文件句柄的最大数目通过增加此值,可以增加允许的最大打开文件数。 |
fs.inotify.max_user_watches |
781250-2097152 | 1048576 | 系统允许的最大文件监视次数。 每个 监视 在32位内核上约为90字节,而在64内核上约160个字节。 |
fs.aio-max-nr |
65536-6553500 | 65536 | Aio-nr 显示当前系统范围内的异步 io 请求数。 aio-最大值-nr 允许你更改 aio-nr 可以增长到的最大值。 |
fs.nr_open |
8192-20000500 | 1048576 | 进程可分配的文件句柄的最大数量。 |
套接字和网络优化
设置 | 允许的值/间隔 | 默认 | 说明 |
---|---|---|---|
net.core.somaxconn |
4096-3240000 | 16384 | 可为任何给定侦听套接字排队的最大连接请求数。 传递给 侦听 (2) 函数的积压工作(backlog)参数值的上限。 如果积压工作参数大于 somaxconn ,则它会以静默方式截断到此限制。 |
net.core.netdev_max_backlog |
1000-3240000 | 1000 | 当接口接收数据包时,在输入端排队的最大数据包数量可以处理这些数据包。 |
net.core.rmem_max |
212992-134217728 | 212992 | 最大接收套接字缓冲区大小(以字节为单位)。 |
net.core.wmem_max |
212992-134217728 | 212992 | 最大发送套接字缓冲区大小(以字节为单位)。 |
net.core.optmem_max |
20480-4194304 | 20480 | 辅助缓冲区最大大小 (选项内存缓冲区) 每个套接字允许。 在少数情况下,套接字选项内存用于存储与套接字的使用相关的附加结构。 |
net.ipv4.tcp_max_syn_backlog |
128-3240000 | 16384 | 尚未收到来自连接客户端的确认的排队连接请求的最大数量。 如果超出此数量,内核将开始删除请求。 |
net.ipv4.tcp_max_tw_buckets |
8000-1440000 | 32768 | timewait 系统同时容纳的最大插槽数。 如果超过此数目,则会立即销毁时间等待套接字并输出警告。 |
net.ipv4.tcp_fin_timeout |
5 - 120 | 60 | 不能再由任何应用程序) 连接引用的孤立 (的时间将在本地终止之前保持 FIN_WAIT_2 状态。 |
net.ipv4.tcp_keepalive_time |
30 - 432000 | 7200 | TCP keepalive 在启用时发送消息的频率 keepalive 。 |
net.ipv4.tcp_keepalive_probes |
1 - 15 | 9 | keepalive TCP 发出多少探测,直到它确定连接中断。 |
net.ipv4.tcp_keepalive_intvl |
1 - 75 | 75 | 探测发出的频率。再乘以 tcp_keepalive_probes 它可以在探测开始后终止未响应的连接。 |
net.ipv4.tcp_tw_reuse |
0 或 1 | 0 | TIME-WAIT 当安全地利用协议视点时,允许将套接字用于新连接。 |
net.ipv4.ip_local_port_range |
第一个: 1024-60999,最后: 32768-65000] | 第一:32768,最后:60999 | TCP 和 UDP 流量用来选择本地端口的本地端口范围。 由两个数字组成:第一个数字是代理节点上的 TCP 和 UDP 流量允许的第一个本地端口,第二个是最后一个本地端口号。 |
net.ipv4.neigh.default.gc_thresh1 |
128-80000 | 4096 | ARP 缓存中可能的最小项数。 如果条目数低于此设置,则不会触发垃圾回收。 |
net.ipv4.neigh.default.gc_thresh2 |
512-90000 | 8192 | ARP 缓存中可能的最大软条目数。 此设置可能是最重要的,因为在达到这一软最大值后,将触发大约5秒的 ARP 垃圾回收。 |
net.ipv4.neigh.default.gc_thresh3 |
1024-100000 | 16384 | ARP 缓存中的最大项数。 |
net.netfilter.nf_conntrack_max |
131072-589824 | 131072 | nf_conntrack 是在 Linux 中跟踪 NAT 连接项的模块。 nf_conntrack 模块使用哈希表记录 TCP 协议的已 建立连接 记录。 nf_conntrack_max 哈希表中的最大节点数,即,模块支持的最大连接数 nf_conntrack 或连接跟踪表的大小。 |
net.netfilter.nf_conntrack_buckets |
65536-147456 | 65536 | nf_conntrack 是在 Linux 中跟踪 NAT 连接项的模块。 nf_conntrack 模块使用哈希表记录 TCP 协议的已 建立连接 记录。 nf_conntrack_buckets 哈希表的大小。 |
工作线程限制
与文件描述符限制一样,进程可以创建的辅助角色或线程的数量受内核设置和用户限制的限制。
设置 | 允许的值/间隔 | 默认 | 说明 |
---|---|---|---|
kernel.threads-max |
20 - 513785 | 55601 | 进程可以加速工作线程。 可创建的所有线程的最大数目均设置为 "内核" 设置 kernel.threads-max 。 |
虚拟内存
以下设置可用于优化 Linux 内核 (VM) 子系统的虚拟内存和 writeout
磁盘的脏数据的操作。
设置 | 允许的值/间隔 | 默认 | 说明 |
---|---|---|---|
vm.max_map_count |
65530-262144 | 65530 | 此文件包含进程可能具有的最大内存映射区域数。 内存映射区域用作直接调用、和的副作用, malloc mmap 也是 mprotect madvise 在加载共享库时。 |
vm.vfs_cache_pressure |
1 - 500 | 100 | 此百分比值控制内核回收内存的趋势,该内存用于缓存目录和 inode 对象。 |
vm.swappiness |
0 - 100 | 60 | 此控件用于定义内核交换内存页的方式。 较高的值会增加入侵量,较小的值会减少交换量。 如果值为0,则指示内核不启动交换,直到可用和文件支持的页数小于区域中的高水位标记。 |
swapFileSizeMB |
1 MB- (/dev/sdb 的 临时磁盘的大小) | 无 | SwapFileSizeMB 指定将在此节点池的代理节点上创建交换文件的大小(MB)。 |
transparentHugePageEnabled |
always , madvise , never |
always |
透明 Hugepages 是一项 Linux 核心功能,旨在通过更有效地使用处理器的内存映射硬件来提高性能。 启用后,内核会尝试尽可能地进行分配 hugepages ,如果 mmap 区域为 2 mb,则任何 Linux 进程都将接收 2 mb 页面。 在某些情况下 hugepages ,当系统范围内启用时,应用程序可能会最终分配更多的内存资源。 应用程序可能 mmap 是一个较大的区域,只需触摸1个字节,在这种情况下,可能会分配一个 2 MB 页面,而不是一个4k 页面。 这种情况的原因是可以禁用 hugepages 系统范围的,或者只是将它们包含在 MADV_HUGEPAGE madvise 区域内。 |
transparentHugePageDefrag |
always , defer , defer+madvise , madvise , never |
madvise |
此值控制内核是否应充分利用内存压缩以提高其 hugepages 可用性。 |