| 分类 |
参数名 |
说明 |
| 系统全局 |
运行级别 |
控制系统启动后进入的运行模式。multi-user(3)为多用户文本模式,graphical(5)为图形界面模式。服务器环境建议使用文本模式以减少资源消耗,如需图形界面需单独安装相应组件并切换运行级别。 |
| |
data seg size |
限制进程数据段(data segment)的最大大小,即进程可通过 brk/sbrk 系统调用分配的最大内存量。设置为 Unlimited 表示不限制进程数据段的大小。 |
| |
File size |
限制进程可创建的单个文件的最大大小。设置为 Unlimited 表示不限制文件大小,允许进程创建任意大小的文件。 |
| |
Open file |
限制单个进程可同时打开的文件描述符数量上限。该参数影响进程能同时打开的文件、套接字、管道等资源数量,高并发服务器场景通常需要调大此值。 |
| |
Message queues |
限制用户可用于 POSIX 消息队列的最大内存字节数。消息队列用于进程间通信,该值决定了单个用户可以分配给所有消息队列的总内存上限。 |
| |
Stack size |
限制进程栈空间的最大大小(单位KB)。栈空间用于存储函数调用信息、局部变量等,过小可能导致栈溢出,过大则浪费虚拟地址空间。 |
| |
Max user processes |
限制单个用户可同时创建的最大进程/线程数量。该值影响系统能够同时运行的进程总数,高并发场景需适当调大。 |
| |
/etc/selinux/config |
SELinux(安全增强 Linux)的全局配置文件,用于设置 SELinux 的工作模式。enforcing 为强制模式,permissive 为宽容模式(仅记录不阻止),disabled 为完全禁用。修改后需重启系统才能生效,若需立即临时生效可执行 setenforce 命令。 |
| 内存 |
vm.swappiness |
控制内核将内存页面交换到 swap 分区的积极程度,取值范围0-100。值越低,内核越倾向于保留物理内存中的页面,减少 swap 使用;值越高,内核越积极地将不活跃页面换出到 swap。服务器环境建议设置较低值以优先使用物理内存。 |
| |
vm.dirty_background_ratio |
当文件系统脏页(已修改但未写入磁盘的缓存页)数量占系统总内存的百分比达到该阈值时,内核会启动后台回写(pdflush/flush)进程,以异步方式将脏页写入磁盘。该参数用于控制后台异步写回的触发时机。 |
| |
vm.dirty_ratio |
当文件系统脏页数量占系统总内存的百分比达到该阈值时,产生脏页的进程将被阻塞,内核强制以同步方式将脏页写入磁盘。该参数用于防止内存中积累过多脏页,避免突然的大量磁盘 I/O。 |
| 调度 |
kernel.sched_min_granularity_ns |
CFS 调度器的最小调度粒度(单位纳秒)。当某个 CPU 运行队列上的进程数超过 sched_nr_latency 阈值时,调度周期等于此值乘以进程数。该参数保证每个进程获得的最小 CPU 时间片,防止频繁切换。 |
| |
kernel.sched_latency_ns |
CFS 调度器的目标调度周期(单位纳秒)。当 CPU 运行队列上的进程数少于 sched_nr_latency 时,使用此值作为调度周期。所有可运行进程在此周期内至少运行一次。 |
| 网络 |
net.ipv4.tcp_keepalive_time |
TCP 连接空闲后,内核开始发送 keepalive 探测包的等待时间(单位秒)。当 TCP 连接在该时间内没有任何数据传输时,内核将开始发送探测报文以检测对端是否仍然存活。 |
| |
net.ipv4.tcp_retries2 |
TCP 数据包重传的最大次数。当已建立的 TCP 连接发送数据后未收到确认时,内核会重传数据,超过此次数后内核将放弃重传并关闭连接。该值影响连接在网络不稳定时的容忍度。 |
| |
net.ipv4.tcp_syn_retries |
TCP 主动建立连接时 SYN 包的最大重试次数。客户端发送 SYN 请求后如果没有收到 SYN+ACK 响应,将重试发送 SYN 包,超过此次数后放弃连接。 |
| |
net.ipv4.tcp_keepalive_probes |
TCP keepalive 探测的最大次数。当 keepalive 探测开始后,如果连续发送此数量的探测包均未收到对端响应,内核将认为连接已失效并发送 RST 关闭连接。 |
| |
net.ipv4.tcp_keepalive_intvl |
TCP keepalive 探测包之间的发送间隔(单位秒)。在首次 keepalive 探测发出后,如果未收到响应,后续探测将按此间隔重复发送,直到达到最大探测次数。 |
| |
net.ipv4.ip_local_port_range |
定义本地 TCP/UDP 端口的可用范围。当应用程序不指定源端口进行连接时,内核从此范围中选择可用端口。调大范围可支持更多并发连接。 |
| |
net.ipv4.ip_forward |
控制是否启用 IPv4数据包转发功能。设为1时系统可作为路由器在网络接口之间转发数据包,设为0时禁用转发。普通服务器通常不需要开启此功能。 |
| |
net.ipv4.conf.all.send_redirects |
控制系统是否向所有网络接口发送 ICMP 重定向消息。ICMP 重定向用于告知发送方存在更优路由路径,出于安全考虑,非路由器设备建议禁用此功能。 |
| |
net.ipv4.conf.default.send_redirects |
控制系统是否向新建网络接口默认发送 ICMP 重定向消息。与 conf.all.send_redirects 类似,但仅作用于新创建的网络接口的默认配置。 |
| |
net.ipv4.conf.all.accept_source_route |
控制是否接受所有接口上的 IP 源路由选项。源路由允许发送方指定数据包经过的路由路径,可能被攻击者利用进行 IP 欺骗,建议禁用。 |
| |
net.ipv4.conf.default.accept_source_route |
控制新建网络接口是否默认接受 IP 源路由选项。与 conf.all.accept_source_route 类似,但仅作用于新创建接口的默认行为。 |
| |
net.ipv4.conf.all.accept_redirects |
控制是否接受所有接口上的 ICMP 重定向消息。接受重定向可能被攻击者利用来篡改路由表,建议在非路由器设备上禁用。 |
| |
net.ipv4.conf.all.secure_redirects |
控制是否仅接受来自网关列表中网关的 ICMP 重定向消息。即便开启了 accept_redirects,此参数也可限制仅接受可信网关的重定向。 |
| |
net.ipv4.conf.default.secure_redirects |
控制新建网络接口是否默认仅接受来自网关列表中网关的 ICMP 安全重定向消息。 |
| |
net.ipv4.conf.all.log_martians |
控制是否记录所有接口上来源地址不合法的数据包(火星包)日志。启用后,内核会将源地址不合理(如私有地址出现在公网接口)的数据包记录到系统日志中,有助于安全审计。 |
| |
net.ipv4.conf.default.log_martians |
控制新建网络接口是否默认记录源地址不合法数据包的日志信息。 |
| |
net.ipv4.icmp_echo_ignore_broadcasts |
控制是否忽略发往广播地址的 ICMP Echo 请求(ping 广播)。启用可防止 smurf 攻击,攻击者通过伪造源地址向广播地址发送 ping 请求来放大攻击流量。 |
| |
net.ipv4.icmp_ignore_bogus_error_responses |
控制是否抑制针对不符合 RFC 1122的异常 ICMP 错误响应的内核告警日志。启用后主要作用是减少此类 bogus error response 的日志噪音,而不是作为通用的 ICMP 报文过滤开关。 |
| |
net.ipv4.conf.all.rp_filter |
控制所有接口的反向路径过滤(Reverse Path Filtering)模式。0表示关闭源地址校验;1表示严格模式,仅当报文源地址的最佳反向路径就是接收接口时才通过;2表示宽松模式,只要系统存在到该源地址的可达路由即可通过。多宿主或非对称路由场景通常更适合宽松模式。 |
| |
net.ipv4.conf.default.rp_filter |
控制新建网络接口默认采用的反向路径过滤模式。其取值语义与 conf.all.rp_filter 一致:0关闭、1严格模式、2宽松模式,仅影响新创建接口的默认行为。 |
| |
net.ipv4.tcp_syncookies |
控制是否启用 TCP SYN Cookie 机制。当 SYN 队列溢出时,内核使用 SYN Cookie 技术处理连接请求而不分配资源,可有效防御 SYN Flood 攻击。 |
| |
net.ipv6.conf.all.accept_ra |
控制所有接口是否接受 IPv6路由器通告(Router Advertisement)。路由器通告用于 IPv6无状态地址自动配置(SLAAC),非需要 IPv6自动配置的场景建议禁用。 |
| |
net.ipv6.conf.default.accept_ra |
控制新建网络接口是否默认接受 IPv6路由器通告。与 conf.all.accept_ra 功能相同,但仅影响新创建接口的默认行为。 |
| |
net.ipv6.conf.all.accept_redirects |
控制所有接口是否接受 IPv6的 ICMP 重定向消息。出于安全考虑,建议在非路由设备上禁用以防止路由表被恶意篡改。 |
| |
net.ipv6.conf.default.accept_redirects |
控制新建网络接口是否默认接受 IPv6的 ICMP 重定向消息。 |
| |
net.core.rmem_default |
设置套接字接收缓冲区的默认大小(单位字节)。当应用程序未显式设置接收缓冲区大小时,使用此默认值。网络密集型业务可适当调大以提高吞吐量。 |
| |
net.core.rmem_max |
设置套接字接收缓冲区允许的最大大小(单位字节)。应用程序通过 setsockopt 设置 SO_RCVBUF 时,不能超过此上限。高吞吐量场景需要调大此值。 |
| |
net.core.wmem_default |
设置套接字发送缓冲区的默认大小(单位字节)。当应用程序未显式设置发送缓冲区大小时使用此默认值。 |
| |
net.core.wmem_max |
设置套接字发送缓冲区允许的最大大小(单位字节)。应用程序通过 setsockopt 设置 SO_SNDBUF 时,不能超过此上限。 |
| |
net.ipv4.tcp_rmem |
设置 TCP 套接字接收缓冲区的大小,包含三个值:最小值、默认值、最大值(单位字节)。内核根据可用内存在此范围内动态调整每个 TCP 连接的接收缓冲区大小。 |
| |
net.ipv4.tcp_wmem |
设置 TCP 套接字发送缓冲区的大小,包含三个值:最小值、默认值、最大值(单位字节)。内核根据可用内存在此范围内动态调整每个 TCP 连接的发送缓冲区大小。 |
| |
net.core.somaxconn |
设置 socket listen()函数 backlog 队列的最大长度,即已完成三次握手等待 accept()处理的连接队列上限。高并发服务器需要调大此值以避免连接被拒绝。 |
| |
net.ipv4.ipfrag_time |
设置 IPv4分片在内存中保留的最长时间(单位秒)。超过此时间仍未完成重组的 IP 分片将被丢弃。该参数影响 IP 分片重组的超时行为。 |
| |
net.ipv4.tcp_tw_reuse |
控制是否允许将 TIME_WAIT 状态的 socket 重新用于新的 TCP 连接。启用后可在高并发短连接场景下快速回收端口资源,减少 TIME_WAIT 状态连接的资源占用。 |
| |
net.ipv4.tcp_fin_timeout |
设置 TCP 连接在 FIN_WAIT_2状态的超时时间(单位秒)。连接关闭过程中对端未发送 FIN 包时,超过此时间后内核强制关闭连接并回收资源。 |
| |
net.ipv4.tcp_orphan_retries |
设置孤儿(orphan)TCP 连接在关闭前重试的次数。孤儿连接是指已经不与任何进程关联但仍处于关闭过程中的 TCP 连接。降低此值可加速孤儿连接的回收。 |
| |
net.ipv4.tcp_synack_retries |
设置 TCP 被动建立连接时 SYN+ACK 包的最大重试次数。服务端收到 SYN 并回复 SYN+ACK 后,如果未收到客户端的 ACK 确认,将重发 SYN+ACK,超过此次数后放弃连接。 |
| |
net.ipv4.tcp_max_orphans |
设置系统中允许存在的最大孤儿 TCP 连接数。当孤儿连接数超过此阈值时,内核会打印警告并开始强制关闭孤儿连接。该参数用于防止孤儿连接占用过多内核资源。 |
| |
net.ipv4.tcp_slow_start_after_idle |
控制 TCP 连接空闲后是否重新进入慢启动阶段。设为1时,空闲后拥塞窗口重置为初始值,重新慢启动;设为0时保持之前的拥塞窗口大小,内网环境设为0可提升性能。 |
| |
net.ipv6.conf.all.disable_ipv6 |
控制是否在所有网络接口上禁用 IPv6协议。设为1时完全禁用 IPv6,设为0时启用。不需要 IPv6的环境建议禁用以减少攻击面。 |
| |
net.ipv6.conf.default.disable_ipv6 |
控制新建网络接口是否默认禁用 IPv6协议。与 conf.all.disable_ipv6类似,但仅影响新创建接口的默认行为。 |
| 调测 |
kernel.printk |
控制内核日志在控制台上的输出级别,通常对应4个整数:console_loglevel、default_message_loglevel、minimum_console_loglevel、default_console_loglevel。只写单个数字时,仅修改第一个参数(当前 console_loglevel),其余三个参数保持原值不变。 |
| |
kernel.hung_task_panic |
控制当检测到 hung task(长时间处于不可中断睡眠 D 状态的进程)时,内核是否触发 panic。设为1时内核 panic 以便通过 kdump 收集调试信息,设为0时仅记录告警日志。 |
| |
kernel.panic_on_oops |
控制当内核发生 oops(内核运行时错误)时是否触发 panic。设为1时 oops 后内核立即 panic,有助于通过 kdump 捕获故障现场;设为0时仅记录 oops 信息,系统可能继续运行但状态不可靠。 |
| |
kernel.panic_on_rcu_stall |
控制当检测到 RCU(Read-Copy-Update)CPU stall(RCU 回调长时间未执行)时,内核是否触发 panic。设为1时触发 panic 以便调试,设为0时仅打印告警信息。 |
| |
kernel.softlockup_panic |
控制当检测到 soft lockup(CPU 长时间未让出调度)时,内核是否触发 panic。设为1时触发 panic 以便通过 kdump 收集信息定位问题,设为0时仅记录告警日志。 |
| |
vm.panic_on_oom |
控制当系统发生 OOM(Out Of Memory,内存耗尽)时,内核是否触发 panic。设为1时内核 panic(不执行 OOM Killer),设为0时内核调用 OOM Killer 选择并杀死进程以释放内存。 |