萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux TCP/IP 核心參數調優完整指南:/proc/sys/net 關鍵參數與持久化設定

Linux 核心網路堆疊透過 /proc/sys/net/ 暴露數百個可調參數。正確調整可大幅提升高併發、高延遲、高頻寬環境下的傳輸效能。本文整理最關鍵參數、建議值、持久化方法與完整參數表參考。

核心 TCP/IP 調優參數 (高效能場景建議值)

參數路徑說明建議值備註
/proc/sys/net/core/rmem_max最大 TCP 接收緩衝區 (位元組)256960 (256 KB)配合 BDP (Bandwidth-Delay Product) 設定
/proc/sys/net/core/wmem_max最大 TCP 發送緩衝區256960同上
/proc/sys/net/core/rmem_default預設 TCP 接收緩衝區256960
/proc/sys/net/core/wmem_default預設 TCP 發送緩衝區256960
/proc/sys/net/ipv4/tcp_window_scaling啟用 TCP 視窗縮放 (RFC 1323)1 (開啟)**必開**,支援 >64KB 視窗,高延遲鏈路關鍵
/proc/sys/net/ipv4/tcp_sack啟用選擇性確認 (SACK)1 (開啟)減少重傳,提升丟包環境效能
/proc/sys/net/ipv4/tcp_timestamps啟用時間戳選項 (RFC 1323)0 (關閉)每封包增 12 bytes 開銷;高併發可關閉換取頻寬,但失去 PAWS/RTT 測量
/proc/sys/net/ipv4/tcp_rmemTCP 接收緩衝區自動調整 (min, default, max)4096 87380 6291456核心自動調節範圍,max 應 ≥ rmem_max
/proc/sys/net/ipv4/tcp_wmemTCP 發送緩衝區自動調整4096 65536 6291456同上
/proc/sys/net/ipv4/tcp_max_syn_backlogSYN 佇列最大長度8192 或更高防禦 SYN Flood、高併發連線
/proc/sys/net/ipv4/tcp_syncookies啟用 SYN Cookies1SYN 佇列滿時啟用,防禦 SYN Flood
/proc/sys/net/ipv4/tcp_fin_timeoutTIME_WAIT 超時秒數30 (預設 60)加速連線釋放,高併發短連線環境建議降低
/proc/sys/net/ipv4/tcp_tw_reuse允許 TIME_WAIT 連線重用於新連出連線1需 tcp_timestamps=1 配合,謹慎啟用
/proc/sys/net/ipv4/tcp_tw_recycle快速回收 TIME_WAIT (已棄用/移除)0**Linux 4.12+ 已移除**,勿使用
/proc/sys/net/core/somaxconn監聽佇列最大長度 (listen backlog)65535Nginx/Redis 等高併發服務需同步調大
/proc/sys/net/core/netdev_max_backlog網卡接收封包佇列長度30000突發流量緩衝

持久化設定:兩種標準方法

方法一:/etc/rc.local (傳統、直觀)

在 /etc/rc.d/rc.local (或 /etc/rc.local) 加入 echo 值 > /proc/路徑,並確保檔案有執行權限 (chmod +x)。

echo 256960 > /proc/sys/net/core/rmem_default
echo 256960 > /proc/sys/net/core/rmem_max
echo 256960 > /proc/sys/net/core/wmem_default
echo 256960 > /proc/sys/net/core/wmem_max
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
echo 8192 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 65535 > /proc/sys/net/core/somaxconn

方法二:/etc/sysctl.conf (標準、systemd 原生支援) — **推薦**

編輯 /etc/sysctl.conf (或 /etc/sysctl.d/99-tcp-tuning.conf):

net.core.rmem_default = 256960
net.core.rmem_max = 256960
net.core.wmem_default = 256960
net.core.wmem_max = 256960
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 30000

套用:sysctl -p 或 sysctl --system (systemd 會開機自動套用)。

參數設定依據:BDP (Bandwidth-Delay Product)

最佳緩衝區大小 ≈ 頻寬 (bits/sec) × 往返延遲 (sec) / 8。

  • 例:1 Gbps (10^9 bps) × 50 ms (0.05 s) = 50 Mb = **6.25 MB** (≈ 6,400,000 bytes)。
  • 建議值 256960 (256 KB) 適合一般資料中心 (10Gbps, <1ms) 或跨區域 (1Gbps, 50ms);極高頻寬長距離需再調大。

補充:/proc/sys/fs/ 與 /proc/sys/kernel/ 關鍵參數

參數說明預設值
/proc/sys/fs/file-max系統全域檔案控制代碼上限依記憶體動態 (通常 >100k)
/proc/sys/fs/nr_open單一進程最大開啟檔案數上限1048576
/proc/sys/kernel/pid_max最大 PID 數值 (影響最大進程數)32768 (64-bit 可設至 4194303)
/proc/sys/kernel/threads-max系統最大執行緒數依記憶體動態
/proc/sys/vm/swappinessSwap 激進度 (0-100)60 (伺服器建議 10-30)
/proc/sys/vm/overcommit_memory記憶體超額配置策略 (0/1/2)0 (啟發式)

驗證與監控

  • sysctl -a | grep tcp 檢視所有 TCP 參數目前值。
  • ss -s / netstat -s 觀察 TCP 重傳、連線建立失敗、緩衝區溢位等計數器。
  • 使用 iperf3、netperf 進行基準測試,量化調優效果。

警告:/proc 下修改屬臨時,**重開機失效**。務必透過 sysctl.conf 或 rc.local 持久化。調整前請完整備份、於測試環境驗證,生產環境漸進式調整。

copyright © 萬盛學電腦網 all rights reserved