Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 調整 TCP 本地端口範圍解決佔用衝突:ip_local_port_range 參數實戰

編輯:關於 Linux

自訂服務需綁定特定低號埠 (如 8370) 卻被 Nginx/Node.js 等高併發服務佔用臨時埠。調整 /proc/sys/net/ipv4/ip_local_port_range 將臨時埠分配範圍上移,避免衝突。本文說明臨時修改、永久生效、驗證指令與生產環境評估建議。

TCP 埠範圍調整示意圖

問題場景

  • Node.js/Nginx 高併發短連線大量消耗臨時埠 (預設 32768-60999)
  • 自訂服務固定綁定低號埠 (如 8370) 啟動失敗:Address already in use

解決方案:上移臨時埠範圍

臨時修改 (立即生效,重開機失效)

echo '40000 65000' > /proc/sys/net/ipv4/ip_local_port_range

永久生效 (sysctl 設定檔)

echo 'net.ipv4.ip_local_port_range = 40000 65000' > /etc/sysctl.d/99-local-port-range.conf
sysctl -p /etc/sysctl.d/99-local-port-range.conf

驗證

cat /proc/sys/net/ipv4/ip_local_port_range
sysctl net.ipv4.ip_local_port_range

參數選擇指引

場景建議範圍說明
一般伺服器32768 60999 (預設)約 28k 埠,足應付多數場景
高併發短連線20000 65000擴大池子,但 20000 以下可能衝突系統服務
需保留低號埠給固定服務40000 65000騰出 1024-39999 給固定綁定服務

注意:範圍需在 1024-65535 之間;1024 以下為知名埠需 root 權限綁定,不建議納入臨時埠範圍。

輔助分析指令

# 查看 TIME_WAIT 連線數 (大量短連線特徵)
netstat -n | grep TIME_WAIT | wc -l

# 查看當前埠使用分布
ss -tan | awk '{print $4}' | cut -d: -f2 | sort -n | uniq -c | sort -rn | head -20

生產環境建議

  • 調整前先在測試環境模擬高併發壓測,觀察埠耗盡情況
  • 搭配 net.ipv4.tcp_tw_reuse = 1、net.ipv4.tcp_fin_timeout = 15 加速 TIME_WAIT 回收
  • 長連線服務 (WebSocket、DB 連線池) 優於短連線,可根本減少臨時埠壓力
  • 修改寫入啟動腳本 (/etc/rc.local 或 sysctl.d) 確保重開機生效
Copyright © Windows教程網 All Rights Reserved