在Linux中,内核调优涉及到对系统内核的各种参数进行优化,以适应不同的工作负载和场景。这些参数主要存储在两个地方:一个是运行时动态可调的/proc/sys
目录下的文件,另一个是持久化的配置文件/etc/sysctl.conf
。
1. 内核调优配置文件
/etc/sysctl.conf
:这是最常用的内核参数配置文件,用于持久化地设定内核参数。当你修改了这个文件中的参数并使用sysctl -p
命令应用后,这些设置会在系统重启后仍然生效。/etc/sysctl.d/
:这是一个目录,里面可以放置多个.conf
文件,每个文件都可以包含一组内核参数设置。这些文件会被sysctl
命令自动读取和应用,提供了更细粒度的控制和组织方式。/usr/lib/sysctl.d/
:类似于/etc/sysctl.d/
,但通常用于系统级别的配置,可能包含由发行版维护的默认配置。/run/sysctl.d/
:这个目录中的文件在系统启动时会被读取和应用,主要用于临时覆盖其他位置的设置。/proc/sys/
:这个目录包含了当前内核参数的运行时状态,可以直接通过文件系统接口修改参数,但修改后的值在重启后不会保留。
2. 内核参数优化示例
以下是一些常见的内核参数,它们经常被优化以改善系统的性能、安全性和稳定性:
- 网络相关参数
net.ipv4.tcp_syncookies
: 设置为1,当SYN队列溢出时启用SYN Cookies,帮助抵御SYN洪水攻击。net.ipv4.tcp_tw_reuse
: 设置为1,允许TIME_WAIT状态的socket被重用,提高高并发场景下的连接效率。net.ipv4.tcp_max_syn_backlog
: 设置一个合理的值,定义系统处理传入的连接请求的队列长度。net.core.somaxconn
: 设置一个较高的值,以允许更多的待处理连接。
- 内存管理参数
vm.swappiness
: 控制系统在使用swap空间前倾向于使用多少物理内存。vm.dirty_background_ratio
: 控制后台写入磁盘的脏页百分比。vm.dirty_ratio
: 控制允许的脏页上限百分比。
- 文件系统参数
fs.file-max
: 设置系统可以打开的最大文件描述符数。fs.inotify.max_user_watches
: 增加用户可以监视的文件和目录的数量。
- 进程管理参数
kernel.shmmax
: 设置共享内存段的最大大小。kernel.shmall
: 设置系统可以分配的共享内存页数。kernel.pid_max
: 设置系统可以创建的最大PID范围。
- 安全性参数
kernel.randomize_va_space
: 设置为2,随机化地址空间布局,提高安全性。fs.protected_symlinks
: 设置为1,防止非特权用户读取或写入指向特殊设备文件的符号链接。
综上所述,这些参数的具体数值取决于你的硬件配置、应用程序需求和安全策略。在调整这些参数时,应当谨慎,因为错误的设置可能会导致系统不稳定或安全风险。在修改参数前,最好进行充分的研究和测试。