Linux 内核参数调优
1344 字
7 分钟
Linux 内核参数调优
Image API Error

[技术分享] Linux 内核参数调优#
总结了一下, 贴出来一个 /etc/sysctl.conf 供参考. 实测效果良好.
推荐前提环境:
- Debian 10 / 11 / 12 (推荐有条件的一律升级至 Debian 12, 不用担心占用问题, 384M 内存以上也能运行良好, CentOS 就算了)
- KVM 虚拟化(LXC 没用过, 不保证可用)
- 384M 以上内存(更低的没有测试, 缓冲区相关配置均和内存相关需要实测)
辅以安装 Xanmod 内核 食用效果更佳.
1# ------ 网络调优: 基本 ------2# TTL 配置, Linux 默认 643# net.ipv4.ip_default_ttl=644
5# 参阅 RFC 1323. 应当启用.6net.ipv4.tcp_timestamps=17# ------ END 网络调优: 基本 ------8
9# ------ 网络调优: 内核 Backlog 队列和缓存相关 ------10# Ref: https://www.starduster.me/2020/03/02/linux-network-tuning-kernel-parameter/11# Ref: https://blog.cloudflare.com/optimizing-tcp-for-high-throughput-and-low-latency/12# Ref: https://zhuanlan.zhihu.com/p/14937294713# 有条件建议依据实测结果调整相关数值14# 缓冲区相关配置均和内存相关15net.core.wmem_default=1638416net.core.rmem_default=26214417net.core.rmem_max=53687091218net.core.wmem_max=53687091219net.ipv4.tcp_rmem=8192 262144 53687091220net.ipv4.tcp_wmem=4096 16384 53687091221net.ipv4.tcp_adv_win_scale=-222net.ipv4.tcp_collapse_max_bytes=629145623net.ipv4.tcp_notsent_lowat=13107224net.core.netdev_max_backlog=1024025net.ipv4.tcp_max_syn_backlog=1024026net.core.somaxconn=819227net.ipv4.tcp_abort_on_overflow=128# 流控和拥塞控制相关调优29# Egress traffic control 相关. 可选 fq, cake30# 实测二者区别不大, 保持默认 fq 即可31net.core.default_qdisc=fq32# Xanmod 内核 6.X 版本目前默认使用 bbr3, 无需设置33# 实测比 bbr, bbr2 均有提升34# 不过网络条件不同会影响. 有需求请实测.35# net.ipv4.tcp_congestion_control=bbr336# 显式拥塞通知37# 已被发现在高度拥塞的网络上是有害的.38# net.ipv4.tcp_ecn=139# TCP 自动窗口40# 要支持超过 64KB 的 TCP 窗口必须启用41net.ipv4.tcp_window_scaling=142# 开启后, TCP 拥塞窗口会在一个 RTO 时间43# 空闲之后重置为初始拥塞窗口 (CWND) 大小.44# 大部分情况下, 尤其是大流量长连接, 设置为 0.45# 对于网络情况时刻在相对剧烈变化的场景, 设置为 1.46net.ipv4.tcp_slow_start_after_idle=047# nf_conntrack 调优48# Add Ref: https://gist.github.com/lixingcong/0e13b4123d29a465e364e230b2e45f6049net.nf_conntrack_max=100000050net.netfilter.nf_conntrack_max=100000051net.netfilter.nf_conntrack_tcp_timeout_fin_wait=3052net.netfilter.nf_conntrack_tcp_timeout_time_wait=3053net.netfilter.nf_conntrack_tcp_timeout_close_wait=1554net.netfilter.nf_conntrack_tcp_timeout_established=30055net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=720056# TIME-WAIT 状态调优57# Ref: http://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html58# Ref: https://www.cnblogs.com/lulu/p/4149312.html59# 4.12 内核中此参数已经永久废弃, 不用纠结是否需要开启60# net.ipv4.tcp_tw_recycle=061## 只对客户端生效, 服务器连接上游时也认为是客户端62net.ipv4.tcp_tw_reuse=163# 系统同时保持TIME_WAIT套接字的最大数量64# 如果超过这个数字 TIME_WAIT 套接字将立刻被清除65net.ipv4.tcp_max_tw_buckets=5500066# ------ END 网络调优: 内核 Backlog 队列和缓存相关 ------67
68# ------ 网络调优: 其他 ------69# Ref: https://zhuanlan.zhihu.com/p/14937294770# Ref: https://www.starduster.me/2020/03/02/linux-network-tuning-kernel-parameter/#netipv4tcp_max_syn_backlog_netipv4tcp_syncookies71# 启用选择应答72# 对于广域网通信应当启用73net.ipv4.tcp_sack=174# 启用转发应答75# 对于广域网通信应当启用76net.ipv4.tcp_fack=177# TCP SYN 连接超时重传次数78net.ipv4.tcp_syn_retries=379net.ipv4.tcp_synack_retries=380# TCP SYN 连接超时时间, 设置为 5 约为 30s81net.ipv4.tcp_retries2=582# 开启 SYN 洪水攻击保护83# 注意: tcp_syncookies 启用时, 此时实际上没有逻辑上的队列长度,84# Backlog 设置将被忽略. syncookie 是一个出于对现实的妥协,85# 严重违反 TCP 协议的设计, 会造成 TCP option 不可用, 且实现上86# 通过计算 hash 避免维护半开连接也是一种 tradeoff 而非万金油,87# 勿听信所谓“安全优化教程”而无脑开启88net.ipv4.tcp_syncookies=089
90# Ref: https://linuxgeeks.github.io/2017/03/20/212135-Linux%E5%86%85%E6%A0%B8%E5%8F%82%E6%95%B0rp_filter/91# 开启反向路径过滤92# Aliyun 负载均衡实例后端的 ECS 需要设置为 093net.ipv4.conf.default.rp_filter=294net.ipv4.conf.all.rp_filter=295
96# 减少处于 FIN-WAIT-2 连接状态的时间使系统可以处理更多的连接97# Ref: https://www.cnblogs.com/kaishirenshi/p/11544874.html98net.ipv4.tcp_fin_timeout=1099
100# Ref: https://xwl-note.readthedocs.io/en/latest/linux/tuning.html101# 默认情况下一个 TCP 连接关闭后, 把这个连接曾经有的参数保存到dst_entry中102# 只要 dst_entry 没有失效,下次新建立相同连接的时候就可以使用保存的参数来初始化这个连接.通常情况下是关闭的103net.ipv4.tcp_no_metrics_save=1104# unix socket 最大队列105net.unix.max_dgram_qlen=1024106# 路由缓存刷新频率107net.ipv4.route.gc_timeout=100108
109# Ref: https://gist.github.com/lixingcong/0e13b4123d29a465e364e230b2e45f60110# 启用 MTU 探测,在链路上存在 ICMP 黑洞时候有用(大多数情况是这样)111net.ipv4.tcp_mtu_probing = 1112
113# No Ref114# 开启并记录欺骗, 源路由和重定向包115net.ipv4.conf.all.log_martians=1116net.ipv4.conf.default.log_martians=1117# 处理无源路由的包118net.ipv4.conf.all.accept_source_route=0119net.ipv4.conf.default.accept_source_route=0120# TCP KeepAlive 调优121# 最大闲置时间122net.ipv4.tcp_keepalive_time=300123# 最大失败次数, 超过此值后将通知应用层连接失效124net.ipv4.tcp_keepalive_probes=2125# 发送探测包的时间间隔126net.ipv4.tcp_keepalive_intvl=2127# 系统所能处理不属于任何进程的TCP sockets最大数量128net.ipv4.tcp_max_orphans=262144129# arp_table的缓存限制优化130net.ipv4.neigh.default.gc_thresh1=128131net.ipv4.neigh.default.gc_thresh2=512132net.ipv4.neigh.default.gc_thresh3=4096133net.ipv4.neigh.default.gc_stale_time=120134net.ipv4.conf.default.arp_announce=2135net.ipv4.conf.lo.arp_announce=2136net.ipv4.conf.all.arp_announce=2137# ------ END 网络调优: 其他 ------138
139# ------ 内核调优 ------140
141# Ref: Aliyun, etc142# 内核 Panic 后 1 秒自动重启143kernel.panic=1144# 允许更多的PIDs, 减少滚动翻转问题145kernel.pid_max=32768146# 内核所允许的最大共享内存段的大小(bytes)147kernel.shmmax=4294967296148# 在任何给定时刻, 系统上可以使用的共享内存的总量(pages)149kernel.shmall=1073741824150# 设定程序core时生成的文件名格式151kernel.core_pattern=core_%e152# 当发生oom时, 自动转换为panic153vm.panic_on_oom=1154# 表示强制Linux VM最低保留多少空闲内存(Kbytes)155# vm.min_free_kbytes=1048576156# 该值高于100, 则将导致内核倾向于回收directory和inode cache157vm.vfs_cache_pressure=250158# 表示系统进行交换行为的程度, 数值(0-100)越高, 越可能发生磁盘交换159vm.swappiness=10160# 仅用10%做为系统cache161vm.dirty_ratio=10162vm.overcommit_memory=1163# 增加系统文件描述符限制164# Fix error: too many open files165fs.file-max=1048575166fs.inotify.max_user_instances=8192167fs.inotify.max_user_instances=8192168# 内核响应魔术键169kernel.sysrq=1170# 弃用171# net.ipv4.tcp_low_latency=1172
173# Ref: https://gist.github.com/lixingcong/0e13b4123d29a465e364e230b2e45f60174# 当某个节点可用内存不足时, 系统会倾向于从其他节点分配内存. 对 Mongo/Redis 类 cache 服务器友好175vm.zone_reclaim_mode=0文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
最后更新于 2023-11-26
部分内容可能已过时
相关文章智能推荐
1
在 CentOS 7 上更新到最新 LTS 内核
Guides在 CentOS 7 上更新到最新 LTS 内核教程
2
使用docker在Linux上搭建Webdav服务端
GuidesWebDAV 服务器搭建教程:使用 Docker 快速部署文件共享服务
3
Centos7更换yum源
GuidesCentos7更换yum源
4
使用Deno构建多种大模型AI API代理
Guides使用deno将多种AI API的代理整合到一个服务中(openai, gemini等)
5
Gemini的OpenAI API兼容性
Guidesgemini添加了对openai api的兼容性支持,原生支持openai api格式的调用
随机文章随机推荐
暂无随机文章
日
一
二
三
四
五
六
文章目录


