Linux 內核通過 /proc/sys 暴露數百個可調參數,網絡子系統參數集中在 /proc/sys/net。本文精選高併發服務器最關鍵的 8 個參數,解釋含義、默認值、調優建議與持久化方法。
文件系統級參數(/proc/sys/fs)
| 參數 | 含義 | 調優建議 |
| file-max | 系統級文件描述符總上限 | 高併發建議 1000000+,配合 ulimit -n |
| inode-max | 系統級 inode 總上限 | 設為 file-max 的 3-4 倍 |
| epoll/max_user_watches | 單用戶 epoll 實例總監聽事件數 | 大量連接場景調大(如 500000),注意內核內存佔用 |
網絡核心參數(/proc/sys/net/core)
| 參數 | 含義 | 調優建議 |
| somaxconn | listen() backlog 上限(已完成連接隊列) | 高併發建議 65535,應用層 listen(fd, somaxconn) |
IPv4 TCP 參數(/proc/sys/net/ipv4)
| 參數 | 含義 | 調優建議 |
| tcp_max_syn_backlog | 半連接隊列上限(SYN_RECV 狀態) | 防 SYN Flood 建議 65535,配合 syncookies |
| tcp_wmem | TCP 發送緩衝區 min/default/max (bytes) | 默認 4KB/16KB/4MB,大流量可調大 max |
| tcp_rmem | TCP 接收緩衝區 min/default/max (bytes) | 同上,配合 BBR/自動調節通常無需手動改 |
| tcp_syncookies | 啟用 SYN Cookie 防洪水攻擊 | 必開 1,犧牲部分 TCP 選項換取抗攻擊 |
修改與持久化
臨時生效(重啟失效)
echo 1000000 > /proc/sys/fs/file-max
sysctl -w net.core.somaxconn=65535
永久生效
vim /etc/sysctl.conf
# 追加:
fs.file-max = 1000000
fs.inode-max = 3000000
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_syncookies = 1
net.core.netdev_max_backlog = 65535 # 网卡接收隊列
sysctl -p # 立即生效
驗證
sysctl -a | grep -E 'file-max|somaxconn|syn_backlog|syncookies'
cat /proc/sys/net/ipv4/tcp_syncookies
調優原則
- 先測量基線(ss、netstat、sar、perf)
- 單參數調整,觀察業務指標(延遲、吞吐、錯誤率)
- 參數間存在耦合(如 somaxconn 需應用層配合),全鏈路驗證
- 記錄變更歷史,納入基礎設施即代碼管理
合理調優內核參數,是突破 Linux 服務器萬級併發瓶頸的基石。