内核参数优化

当在CentOS 7.9上搭建Web服务器时,以下是一些可以优化内核参数的建议。可以使用sysctl命令来临时修改这些参数,或者将它们添加到系统的配置文件以在启动时应用。

vm.swappiness: 降低vm.swappiness以减少交换空间的使用。


sysctl vm.swappiness=10

vm.dirty_background_ratio和vm.dirty_ratio: 调整脏页刷写的阈值。


sysctl vm.dirty_background_ratio=5
sysctl vm.dirty_ratio=10

kernel.pid_max: 增加最大进程ID的数量。


sysctl kernel.pid_max=65536

net.core.somaxconn和net.core.netdev_max_backlog: 增加连接队列长度。


sysctl net.core.somaxconn=65535
sysctl net.core.netdev_max_backlog=65535

fs.file-max和fs.nr_open: 增加文件句柄数量。


sysctl fs.file-max=65535
sysctl fs.nr_open=65535

kernel.shmmax和kernel.shmall: 增加共享内存大小。


sysctl kernel.shmmax=536870912
sysctl kernel.shmall=131072

net.ipv4.tcp_fin_timeout: 降低TCP连接的TIME_WAIT时间。


sysctl net.ipv4.tcp_fin_timeout=15

net.ipv4.tcp_keepalive_time: 减少TCP Keepalive时间。


sysctl net.ipv4.tcp_keepalive_time=300

net.ipv4.tcp_max_syn_backlog: 增加TCP SYN队列的长度。


sysctl net.ipv4.tcp_max_syn_backlog=65535

net.ipv4.tcp_max_tw_buckets: 增加TIME_WAIT套接字的数量。


sysctl net.ipv4.tcp_max_tw_buckets=1440000

net.ipv4.tcp_tw_reuse: 启用TIME_WAIT套接字重用。


sysctl net.ipv4.tcp_tw_reuse=1

net.ipv4.ip_local_port_range: 增加本地端口范围。


sysctl net.ipv4.ip_local_port_range="1024 65535"

net.ipv4.tcp_window_scaling: 启用TCP窗口缩放。


sysctl net.ipv4.tcp_window_scaling=1

net.ipv4.tcp_rmem和net.ipv4.tcp_wmem: 调整TCP接收和发送缓冲区大小。


sysctl net.ipv4.tcp_rmem="4096 87380 16777216"
sysctl net.ipv4.tcp_wmem="4096 87380 16777216"

net.ipv4.tcp_no_metrics_save: 禁用TCP连接状态的保存。


sysctl net.ipv4.tcp_no_metrics_save=1

net.ipv4.tcp_congestion_control: 选择适当的TCP拥塞控制算法,如BBR。


sysctl net.ipv4.tcp_congestion_control=bbr

kernel.sem: 增加系统的信号量设置。


sysctl kernel.sem="250 256000 32 8192"

kernel.msgmni: 增加系统消息队列标识符的数量。


sysctl kernel.msgmni=1024

kernel.msgmax和kernel.msgmnb: 增加系统消息队列大小。


sysctl kernel.msgmax=65536
sysctl kernel.msgmnb=65536

kernel.core_pattern: 配置核心转储文件的位置和命名方式。


sysctl kernel.core_pattern=/var/core/core.%e.%p

在更改这些参数之前,请确保备份配置文件,并确保它们适用于您的特定服务器工作负载和硬件配置。不同的工作负载可能需要不同的内核参数设置。