内核优化参数记录

参数说明

Linux内核参数的配置对于性能的影响是巨大的。 可以通过修改/etc/sysctl.conf文件来调整。下面是每个参数的简要说明:

参数名 参数值 说明 建议
vm.swappiness 0 控制内核将哪些页面交换到磁盘以释放内存。 如果您的系统拥有足够的内存容量,建议将这个参数的值设置为 0,以减少交换分区的使用。
vm.panic_on_oom 1 控制系统在内存不足时是否会宕机。 如果您的系统拥有足够的内存容量,建议将这个参数的值设置为 1,以确保系统不会因为内存不足而出现问题。
kernel.panic 10 控制系统在内核崩溃时重新启动的时间。 如果您的系统存在内核崩溃的问题,建议将这个参数的值设置得较小,以便快速重新启动系统。
fs.file-max 65536 控制内核允许打开的文件数的最大数量。 如果您的应用程序需要大量的文件句柄,建议增加这个参数的值。
kernel.sysrq 0 控制内核是否允许使用 SysRq 键来执行紧急操作。 如果您不需要使用 SysRq 键,建议将这个参数的值设置为 0,以增加系统的安全性。
kernel.printk 5 4 1 7 控制内核消息的打印级别。 如果您不需要详细的内核消息,建议将这个参数的值设置为 3 4 1 3,以减少内核消息的频率和级别。
kernel.softlockup_panic 1 控制系统在发生软锁定时是否宕机。 如果您的系统存在软锁定的问题,建议将这个参数的值设置为 1,以便快速重新启动系统。
net.ipv4.conf.default.rp_filter 0 控制反向路径检测。 如果您的系统需要进行反向路径检测,建议将这个参数的值设置为 1。
net.ipv4.ip_forward 1 控制 IP 转发功能。 如果您的系统需要使用 IP 转发功能,建议将这个参数的值设置为 1。
net.core.netdev_max_backlog 40960 控制网络设备接收队列的长度。 如果您的系统的网络流量较大,建议增加这个参数的值。
net.core.optmem_max 921600 控制内核套接字缓冲区的最大大小。 如果您的系统的网络流量较大,建议增加这个参数的值。
net.core.rmem_default 2097152 控制内核套接字接收缓冲区的默认大小。 如果您的系统的网络流量较大,建议增加这个参数的值。
net.core.rmem_max 8388608 内核套接字接收缓冲区的最大大小。 如果您的系统的网络流量较大,建议增加这个参数的值。
net.ipv4.tcp_rmem 4096 87380 8388608 内核套接字 TCP 接收缓冲区的最小、默认、最大大小。 如果您的系统的网络流量较大,建议增加这些参数的值。
net.ipv4.tcp_wmem 4096 87380 8388608 内核套接字 TCP 发送缓冲区的最小、默认、最大大小。 如果您的系统的网络流量较大,建议增加这些参数的值。
net.ipv4.udp_mem 8388608 12582912 16777216 内核套接字 UDP 缓冲区的最小、默认、最大大小。 如果您的系统的网络流量较大,建议增加这些参数的值。
net.ipv4.udp_rmem_min 65536 内核套接字 UDP 接收缓冲区的最小大小。 如果您的系统的网络流量较大,建议增加这个参数的值。
net.ipv4.udp_wmem_min 65536 内核套接字 UDP 发送缓冲区的最小大小。 如果您的系统的网络流量较大,建议增加这个参数的值。
net.ipv4.tcp_no_metrics_save 1 控制内核是否保存 TCP 的性能指标。 如果您不需要保存 TCP 的性能指标,建议将这个参数的值设置为 1,以减少系统的 I/O 负载。
net.ipv4.icmp_echo_ignore_broadcasts 1 控制内核是否响应广播地址的 ICMP 请求。 如果您不需要响应广播地址的 ICMP 请求,建议将这个参数的值设置为 1,以增加系统的安全性。
net.ipv4.ipfrag_high_thresh 5242880 控制内核 IP 分片的高阈值。 如果您的系统的网络流量较大,建议增加这个参数的值。
net.ipv4.ipfrag_low_thresh 2932160 控制内核 IP 分片的低阈值。 如果您的系统的网络流量较大,建议增加这个参数的值。
net.ipv4.ip_local_port_range 1025 65530 控制内核分配本地端口的范围。 如果您的应用程序需要大量的本地端口,建议增加这些参数的值。
net.ipv4.neigh.default.gc_thresh1 8192 控制内核网络邻居表的 GC 阈值。 如果您的系统的网络流量较大,建议增加这个参数的值。|
net.ipv4.neigh.default.gc_thresh2 4092 控制内核网络邻居表的 GC 阈值。 如果您的系统的网络流量较大,建议增加这个参数的值。
net.ipv4.neigh.default.gc_thresh3 8192 控制内核网络邻居表的 GC 阈值。 如果您的系统的网络流量较大,建议增加这个参数的值。
net.ipv4.tcp_fin_timeout 10 控制内核 TCP 连接终止时的超时时间。 如果您的应用程序需要快速地建立和终止 TCP 连接,建议将这个参数的值设置为较小的值。
net.ipv4.tcp_keepalive_time 3600 控制内核 TCP 连接的空闲时间。 如果您的应用程序需要保持 TCP 连接的长时间空闲状态,建议增加这个参数的值。
net.ipv4.tcp_max_syn_backlog 40960 控制内核 TCP SYN 队列的最大长度。 如果您的系统需要处理大量的 TCP 连接请求,建议增加这个参数的值。
net.ipv4.tcp_max_tw_buckets 1440000 控制内核 TCP TIME-WAIT 队列的最大长度。 如果您的系统需要处理大量的 TCP 连接请求,建议增加这个参数的值。
net.ipv4.tcp_rmem 92160 6000000 17476000 内核套接字 TCP 接收缓冲区的最小、默认、最大大小。 如果您的系统的网络流量较大,建议增加这些参数的值。
net.ipv4.tcp_sack 1 控制内核是否启用 TCP SACK。 如果您的应用程序需要使用 TCP SACK,建议将这个参数的值设置为 1。
net.ipv4.tcp_synack_retries 2 控制内核 TCP 连接建立时的重试次数。 如果您的系统需要处理大量的 TCP 连接请求,建议增加这个参数的值。
net.ipv4.tcp_syncookies 1 控制内核是否启用 TCP SYN Cookie。 如果您的系统需要处理大量的 TCP 连接请求,建议将这个参数的值设置为 1。
net.ipv4.tcp_syn_retries 2 控制内核 TCP 连接建立时的重试次数。 如果您的系统需要处理大量的 TCP 连接请求,建议增加这个参数的值。
net.ipv4.tcp_tw_recycle 1 控制内核是否启用 TCP TIME-WAIT 回收机制。 如果您的系统需要处理大量的 TCP 连接请求,建议将这个参数的值设置为 1。
net.ipv4.tcp_tw_reuse 1 控制内核是否启用 TCP TIME-WAIT 重用机制。 如果您的系统需要处理大量的 TCP 连接请求,建议将这个参数的值设置为 1。
net.ipv4.tcp_window_scaling 1 控制内核是否启用 TCP 窗口扩展机制。 如果您的系统需要处理大量的 TCP 连接请求,建议将这个参数的值设置为 1。
net.ipv4.tcp_timestamps 1 控制内核是否启用 TCP 时间戳机制。 如果您的应用程序需要使用 TCP 时间戳机制,建议将这个参数的值设置为 1。
net.core.somaxconn 65535 内核套接字连接队列的最大长度。 如果您的系统需要处理大量的 TCP 连接请求,建议增加这个参数的值。

参考示例

vm.swappiness = 0
vm.panic_on_oom=1
kernel.panic=10
fs.file-max = 65536
kernel.sysrq = 0
kernel.printk = 5 4 1 7
kernel.softlockup_panic = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.ip_forward = 1
net.core.netdev_max_backlog = 40960
net.core.optmem_max = 921600
net.core.rmem_default = 2097152
net.core.wmem_default = 2097152
net.core.wmem_max = 8388608
net.core.rmem_max = 8388608
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608
net.ipv4.udp_mem = 8388608 12582912 16777216
net.ipv4.udp_rmem_min = 65536
net.ipv4.udp_wmem_min = 65536
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.ipfrag_high_thresh = 5242880
net.ipv4.ipfrag_low_thresh = 2932160
net.ipv4.ip_local_port_range = 1025 65530
net.ipv4.neigh.default.gc_thresh1 = 8192
net.ipv4.neigh.default.gc_thresh2 = 4092
net.ipv4.neigh.default.gc_thresh3 = 8192
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 3600
net.ipv4.tcp_max_syn_backlog = 40960
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_rmem = 92160 6000000 17476000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.core.somaxconn = 65535
Published At