一、【写在前面】
Linux内核调参是一个重要知识,这篇文章总结一下常见的参数用法。
调参位置在 /etc/sysctl.conf中或者sysctl.d
区别是:
-
/etc/sysctl.conf
文件:- 这是默认的主配置文件,包含了系统上所有的 sysctl 参数配置。
- 所有的配置项都可以直接添加到这个文件中。
- 在这个文件中,通常会包含一些全局性的配置,对整个系统生效。
-
/etc/sysctl.d/
目录:- 这个目录是用来存放系统级别和软件包级别的 sysctl 配置文件的地方。
- 在这个目录下,可以创建一个新的文件,以
.conf
结尾,来添加相关的 sysctl 配置。 - 这种结构允许不同的软件包或管理员组织他们自己的 sysctl 参数,方便管理。
使用场景:
- 如果你只是想修改一些通用的全局参数,直接编辑
/etc/sysctl.conf
文件即可。 - 如果你正在为某个软件包配置 sysctl 参数,最好将相关的配置放在
/etc/sysctl.d/
目录下,创建一个新的文件,以保持结构的清晰性。
注意事项:
- 在修改这些文件后,需要使用
sysctl -p
命令来加载新的配置。 - 在
/etc/sysctl.d/
目录下的文件通常以.conf
结尾,但并非必须。系统会按照文件名的字母顺序加载配置,因此可以通过文件名来控制加载的顺序。 - 请谨慎修改这些文件,确保你了解正在修改的参数的含义以及对系统的影响。
二、【参数记录】
-
网络参数:
net.ipv4.tcp_max_syn_backlog
: 设置TCP SYN 队列的最大长度,影响连接的建立。net.ipv4.tcp_max_tw_buckets
: 设置系统允许的最大 TIME-WAIT sockets 数量。net.core.somaxconn
: 设置系统对于监听状态的套接字的最大并发连接数。net.ipv4.ip_forward
: 控制是否启用IP转发,用于路由功能。net.ipv4.conf.all.accept_redirects
: 控制是否接受 ICMP 重定向。net.ipv4.conf.all.forwarding
: 控制所有网络接口是否启用 IP 转发。net.ipv4.tcp_syncookies
: 启用 SYN Cookie 支持,防止 SYN 攻击。net.core.netdev_max_backlog
: 控制网络设备队列的最大长度。
-
内存参数:
vm.max_map_count
: 设置一个进程的最大地址空间映射数量。vm.vfs_cache_pressure
: 控制文件系统元数据缓存与文件页缓存之间的平衡。vm.swappiness
: 调整系统对交换空间的使用倾向。vm.dirty_ratio
和vm.dirty_background_ratio
: 控制脏页(尚未写入磁盘的内存页)的百分比。vm.overcommit_memory
: 决定内存超额分配策略。vm.max_map_count
: 设置一个进程最大的地址空间。
-
文件系统参数:
fs.inode-max
: 设置系统上的最大inode数量。fs.quota
: 启用磁盘配额功能。fs.file-max
: 设置系统所能打开文件的最大数量。fs.nr_open
: 设置系统可打开的文件句柄数量。fs.inotify.max_user_watches
: 设置inotify机制的最大用户观察数。
-
安全性参数:
kernel.exec-shield
: 控制可执行文件的地址空间布局,用于防范缓冲区溢出攻击。kernel.sysrq
: 启用或禁用系统请求键(SysRq)功能。kernel.randomize_va_space
: 控制地址空间的随机化,提高系统的安全性。kernel.core_pattern
: 设置core dump文件的命名规则。fs.protected_hardlinks
和fs.protected_symlinks
: 增强对 /tmp 目录的保护。
-
TCP参数:
net.ipv4.tcp_rmem
: 控制TCP接收缓冲区的最小、默认、最大大小。net.ipv4.tcp_wmem
: 控制TCP发送缓冲区的最小、默认、最大大小。net.ipv4.tcp_tw_reuse
: 允许重新使用TIME-WAIT套接字。net.ipv4.tcp_tw_recycle
: 启用快速TIME-WAIT套接字回收。net.ipv4.tcp_fin_timeout
: 设置TCP连接的FIN等待时间。net.ipv4.tcp_keepalive_time
: 设置TCP连接的空闲时间。net.ipv4.tcp_window_scaling
: 启用 TCP 窗口扩大因子。
-
进程参数:
kernel.panic_on_oops
: 决定系统在发生内核 oops 时是否自动重启。kernel.shmall
: 共享内存段的总大小(以页面为单位)。kernel.shmmax
: 共享内存段的最大大小(以字节为单位)。kernel.pid_max
: 系统允许的最大PID值。kernel.sem
: 用于控制 System V IPC 信号量的参数。
-
调度参数:
kernel.sched_migration_cost_ns
: 设置任务迁移的成本。kernel.sched_autogroup_enabled
: 启用或禁用自动任务组。
-
时间参数:
kernel.timezone
: 设置内核时区。kernel.panic
: 设置内核发生致命错误时的延迟时间。