Linux 内核调优
2023-11-14 本文已影响0人
承诺一时的华丽
# Kernel parameters
# 关闭 SysRq 功能以增强安全性
kernel.sysrq = 0
kernel.pid_max = 65535
# File system parameters
# 设置最大打开文件数,适应高并发环境
fs.file-max = 2097152
# 设置每个用户的最大文件监视数,适应应用程序可能的大量文件变化监听
fs.inotify.max_user_watches = 524288
# 设置每个进程允许打开的文件数量,高于默认值以适应高并发
fs.nr_open = 2000500
# Virtual memory parameters
# 设置交换的倾向,较低的值有助于减少交换操作,提高性能
vm.swappiness = 1
# 设置系统开始使用交换前的脏页占总内存的百分比
vm.dirty_ratio = 10
# 设置开始在后台回写脏页时脏页占总内存的百分比
vm.dirty_background_ratio = 2
# 增加最大内存映射数量,对一些内存密集型应用有利
vm.max_map_count = 262144
# 减少VFS缓存压力,提高文件系统性能
vm.vfs_cache_pressure = 50
# Network parameters
# 增加监听队列的最大长度,适应高并发连接
net.core.somaxconn = 65535
# 增加网络设备接收队列的最大长度,减少丢包
net.core.netdev_max_backlog = 30000
# 设置网络设备的预算,用于在软中断处理网络包时的最大处理量
net.core.netdev_budget = 30000
net.core.netdev_budget_usecs = 6000
# 设置IP碎片的高水位线
net.ipv4.ipfrag_high_thresh = 8388608
# 设置TCP快速打开的配置
net.ipv4.tcp_fastopen = 3
# 设置ICMP(互联网控制消息协议)参数
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
# TCP congestion and queue management
# 设置默认队列调度算法为 fq,优化小包传输和避免缓冲区膨胀
net.core.default_qdisc = fq
# 使用 BBR 拥塞控制算法,提高带宽利用率和减少延迟
net.ipv4.tcp_congestion_control = bbr
# TCP memory optimizations
# 调整TCP读写缓冲区的最大值,适应大量数据传输
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# 设置TCP读写缓冲区的默认大小
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
# 调整TCP内存的压力阈值
net.ipv4.tcp_mem = 4096 131072 16777216
net.ipv4.tcp_rmem = 4096 131072 16777216
net.ipv4.tcp_wmem = 4096 131072 16777216
# Enable TCP Fast Open
# 启用 TCP Fast Open,以减少TCP三次握手的开销
net.ipv4.tcp_fastopen = 3
# TCP SACK, DSACK, and FACK
# 启用选择确认(SACK),对丢包恢复有利
net.ipv4.tcp_sack = 1
# 启用重复SACK
net.ipv4.tcp_dsack = 1
# 禁用前向确认(FACK),根据网络情况调整
net.ipv4.tcp_fack = 0
# Keepalive settings
# 调整 TCP Keepalive 设置以快速检测和关闭死连接
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 6
# 设置 TCP FIN 超时时间
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
# 增加 TCP SYN 接收队列的最大长度
net.ipv4.tcp_max_syn_backlog = 65535
# 其他 TCP 通用调整
net.ipv4.tcp_no_metrics_save = 0
net.ipv4.tcp_moderate_rcvbuf = 1
# 关闭 TCP 在空闲时进入慢启动
net.ipv4.tcp_slow_start_after_idle = 1
# 安全相关配置
# 防止IP地址欺骗
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
# 禁止发送重定向消息
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# 启用SYN Cookies,防御SYN洪水攻击
net.ipv4.tcp_syncookies = 1
# 网络协议栈调整
# 启用TCP时间戳以减少时间延迟
net.ipv4.tcp_timestamps = 1
# 启用TCP窗口缩放
net.ipv4.tcp_window_scaling = 1
# 允许系统接受源路由的数据包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# 增大ICMP错误消息速率限制
net.ipv4.icmp_ratelimit = 100
net.ipv4.icmp_ratemask = 88089
# 减少TCP重试次数,快速检测和关闭死连接
# 调整TCP的重试次数,减少因为网络问题导致的连接挂起时间
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 15
# 调整TCP队列长度,减少拥塞
net.ipv4.tcp_max_tw_buckets = 1440000
# 调整TCP SYNACK 重试次数
net.ipv4.tcp_synack_retries = 3
# 其他性能调整
# 禁用IPv6,如果您不需要IPv6,这可以减少额外的网络开销
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# 调整IPv4路由缓存的垃圾回收阈值
net.ipv4.route.gc_elasticity = 2
# 减少TCP和UDP跟踪器的条目生命周期,有助于在NAT环境下快速释放资源
net.netfilter.nf_conntrack_tcp_timeout_established = 54000
net.netfilter.nf_conntrack_udp_timeout = 60
net.netfilter.nf_conntrack_udp_timeout_stream = 180
# 提高网络接口接收包的最大缓冲区大小,有助于处理大量小包的情况
net.core.optmem_max = 65536
# 调整IP分片的行为,提高处理大数据包的效率
net.ipv4.ipfrag_time = 30
# 启用路由缓存流量共享,这可以提高处理大量数据的能力
net.ipv4.route.flush = 1