使用大佬写的“TCP迷之调参” https://omnitt.com/ 生成了脚本:
sudo cp /etc/sysctl.conf /etc/sysctl.conf.bk_$(date +%Y%m%d_%H%M%S) && sudo sh -c 'echo "kernel.pid_max = 65535kernel.panic = 1kernel.sysrq = 1kernel.core_pattern = core_%ekernel.printk = 3 4 1 3kernel.numa_balancing = 0kernel.sched_autogroup_enabled = 0vm.swappiness = 10vm.dirty_ratio = 10vm.dirty_background_ratio = 5vm.panic_on_oom = 1vm.overcommit_memory = 1vm.min_free_kbytes = 90214net.core.default_qdisc = cakenet.core.netdev_max_backlog = 2000net.core.rmem_max = 10872423net.core.wmem_max = 10872423net.core.rmem_default = 87380net.core.wmem_default = 65536net.core.somaxconn = 846net.core.optmem_max = 65536net.ipv4.tcp_fastopen = 3net.ipv4.tcp_timestamps = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_fin_timeout = 10net.ipv4.tcp_slow_start_after_idle = 0net.ipv4.tcp_max_tw_buckets = 32768net.ipv4.tcp_sack = 1net.ipv4.tcp_fack = 0net.ipv4.tcp_rmem = 8192 87380 10872423net.ipv4.tcp_wmem = 8192 65536 10872423net.ipv4.tcp_mtu_probing = 1net.ipv4.tcp_congestion_control = bbrnet.ipv4.tcp_notsent_lowat = 4096net.ipv4.tcp_window_scaling = 1net.ipv4.tcp_adv_win_scale = 4net.ipv4.tcp_moderate_rcvbuf = 1net.ipv4.tcp_no_metrics_save = 0net.ipv4.tcp_max_syn_backlog = 3385net.ipv4.tcp_max_orphans = 65536net.ipv4.tcp_synack_retries = 2net.ipv4.tcp_syn_retries = 3net.ipv4.tcp_abort_on_overflow = 0net.ipv4.tcp_stdurg = 0net.ipv4.tcp_rfc1337 = 0net.ipv4.tcp_syncookies = 1net.ipv4.ip_local_port_range = 1024 65535net.ipv4.ip_no_pmtu_disc = 0net.ipv4.route.gc_timeout = 100net.ipv4.neigh.default.gc_stale_time = 120net.ipv4.neigh.default.gc_thresh3 = 8192net.ipv4.neigh.default.gc_thresh2 = 4096net.ipv4.neigh.default.gc_thresh1 = 1024net.ipv4.icmp_echo_ignore_broadcasts = 1net.ipv4.icmp_ignore_bogus_error_responses = 1net.ipv4.conf.all.rp_filter = 1net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.default.arp_ignore = 1" > /etc/sysctl.conf' && sudo sysctl -p首先对大佬的脚本和工具表示感谢!
但是喂给GPT之后有些反馈让人犹豫要不要继续这样调:
GPT5用符号标注:✅可取|⚠️有条件/存疑|❌不建议/过时
内核/VM(与 TCP 关系不大,且风险大)
kernel.pid_max = 65535 ❌ 64位默认通常是 4194304;你把可用 PID 大幅降低,影响并发/守护进程恢复。
kernel.panic = 1 ⚠️ 生产可考虑,但容易自动重启掩盖问题根因。
kernel.sysrq = 1 ⚠️ 方便调试,但有安全面;VPS 不一定需要。
kernel.core_pattern = core_%e ⚠️ 可,但注意磁盘占用。
kernel.printk = 3 4 1 3 ⚠️ 日志等级调整,看需求。
kernel.numa_balancing = 0 ⚠️ 小型 VPS 基本无感。
kernel.sched_autogroup_enabled = 0 ⚠️ 取舍;对交互/桌面更敏感。
vm.swappiness = 10 ⚠️ 常见调法;但要看内存/工作集。
vm.dirty_ratio=10 / dirty_background_ratio=5 ⚠️ 可,但对 IO 型负载要实测。
vm.panic_on_oom = 1 ❌ OOM 直接 panic,VPS 极不友好。
vm.overcommit_memory = 1 ⚠️ 放宽内存分配,容易 OOM;谨慎。
vm.min_free_kbytes = 90214 ⚠️ 固定值对不同内存容量的机器不稳妥。
net.core
default_qdisc = cake ⚠️ 前提:内核里有 sch_cake 模块。很多发行版默认没有,sysctl -p 直接报错中断;与 BBR 搭配一般用 fq 更稳。
netdev_max_backlog = 2000 ✅ 适度;
rmem_max/wmem_max ≈ 10MB ✅ 可以,只是有点小(建议 32MB 级别上限更通用)。
rmem_default=87380 / wmem_default=65536 ⚠️ 这俩 反而偏小;默认通常更大。
somaxconn = 846 ❌ 新系统默认多为 4096;你这是下降;没有必要。
optmem_max = 65536 ⚠️ 一般不用动。
TCP 特性
tcp_fastopen = 3 ⚠️ 开了客户端+服务端;有些中间盒会阻断,按环境评估。
tcp_timestamps = 1 ✅ 默认就开,BBR 也需要时间戳支持没问题。
tcp_tw_reuse = 1 ❌ 新内核已基本无效/被移除;可忽略。
tcp_fin_timeout = 10 ⚠️ 激进,容易误伤慢链接/长 RTT 业务。
tcp_slow_start_after_idle = 0 ✅ 对长连接业务常见优化。
tcp_max_tw_buckets = 32768 ⚠️ 限桶有副作用,现代内核对 TIME_WAIT 处理已优化。
tcp_sack = 1 ✅ 应保留。
tcp_fack = 0 ❌ 已废弃,内核忽略。
tcp_rmem/tcp_wmem ✅ 建议三元组上限再大些(到 32MB 更泛用)。
tcp_mtu_probing = 1 ✅ 黑洞发现有用。
tcp_congestion_control = bbr ✅ 推荐(Ubuntu 22.04 自带 BBR1;BBR2 另说)。
tcp_notsent_lowat = 4096 ⚠️ 生效还取决于应用层 TCP_NOTSENT_LOWAT 设置;保留也无妨。
tcp_window_scaling = 1 / tcp_moderate_rcvbuf = 1 ✅ 默认如此。
tcp_adv_win_scale = 4 ⚠️ 调太大可能影响吞吐/内存占用分配;默认即可更稳。
tcp_no_metrics_save = 0 ✅ 默认。
连接队列/安全/邻居表
tcp_max_syn_backlog = 3385 ⚠️ 适度;但真正瓶颈多在 app/backlog/somaxconn。
tcp_synack_retries = 2 / tcp_syn_retries = 3 ⚠️ 偏激进;对高丢包/移动端不友好。
tcp_abort_on_overflow = 0 ✅
tcp_stdurg = 0 ✅
tcp_rfc1337 = 0 ❌ 建议 1(防 TIME-WAIT 攻击)。
tcp_syncookies = 1 ✅
ip_local_port_range = 1024 65535 ✅ 常规。
ip_no_pmtu_disc = 0 ✅
route.gc_timeout = 100 ⚠️ 一般不需要动。
neigh.default.gc_* ✅ 适度提高可缓解 ARP 表溢出。
icmp_echo_ignore_broadcasts = 1 / icmp_ignore_bogus_error_responses = 1 ✅
rp_filter = 1(all/default) ⚠️ 严格模式易在多宿主/策略路由/隧道场景误杀回包;服务器通常设 0(关闭)或 2(宽松) 更稳。
arp_announce=2 / arp_ignore=1 ✅ 多网卡/ARP flux 时有用,单网口影响不大。
评论 (0)