← 返回技術部落格

一篇搞定 OpenClaw 90% 閘道異常:連接埠衝突 + 診斷工具實戰

OpenClaw Gateway 18789 連接埠衝突與 openclaw doctor 診斷
閘道異常多半不是 OpenClaw 壞了,而是連接埠、supervisor 與 auth 沒對齊。

OpenClaw Gateway 出問題時,最常見其實不是「平台壞掉」,而是連接埠衝突、環境變數漏設、反向代理誤配。這篇用可重現流程,把你在值班時最常遇到的 90% 異常一次拆解,搭配官方文件 docs.openclaw.ai 做交叉驗證。

若你正要把服務正式上線,先看部署入口 ../yuancheng-mac-openclaw-shicao-meidong-meixi/yuancheng-mac-openclaw-shicao-meidong-meixi.html,再把 OpenHuman 與 Runner 的角色拆乾淨(../openhuman-memory-tree-yunduan-mac-openclaw/openhuman-memory-tree-yunduan-mac-openclaw.html../github-actions-ios-ci-mac-man-self-hosted-runner-jia-su-dian/github-actions-ios-ci-mac-man-self-hosted-runner-jia-su-dian.html),可顯著降低互相搶資源造成的閘道抖動。

先救火的原則:先確認 Gateway process 存活,再看連接埠占用,最後才調整網路與 TLS。順序錯了,通常會越修越亂。

1. 先分型:你遇到的是哪一類閘道異常?

先把現象歸類,才能快速縮小排查範圍。以下矩陣可當值班 SOP 的第一步。

症狀常見根因第一個動作
啟動後立刻退出連接埠已被佔用、設定檔語法錯誤先跑 doctor,再查 listen socket
本機可通、外部不可達防火牆或安全群組未放行對照實際綁定位址與開放連接埠
偶發 502 / timeout上游延遲、健康檢查過於嚴苛拉健康探針與上游日誌時間線
TLS 握手失敗憑證鏈不完整、SNI 主機名不符先做 openssl 連線驗證

2. 五分鐘快篩:先跑 doctor 再看程序狀態

OpenClaw 官方建議先跑診斷工具,再對照服務狀態與設定值。文件入口:Gateway TroubleshootingGateway Doctor

Step A:執行 OpenClaw doctor
openclaw gateway doctor --verbose
# Look for: config path, bind address, upstream checks, TLS warnings
Step B:確認程序與監聽狀態
ps aux | rg "openclaw|gateway"
lsof -nP -iTCP -sTCP:LISTEN | rg ":(3000|8080|8443)"
netstat -an | rg "LISTEN|3000|8080|8443"
doctor 訊號意義建議處置
config file not found部署路徑或掛載錯誤修正設定檔路徑,再重啟
bind failed連接埠衝突或權限不足改連接埠或釋放占用程序
upstream unhealthy後端服務未就緒先修上游,再調整重試策略
tls chain invalid憑證鏈不完整補中繼憑證並驗證 fullchain

3. 連接埠衝突:最常見、也最容易忽略

同一台機器同時跑 Gateway、Runner 與其他代理時,最常見就是預設連接埠重疊。尤其是臨時手動啟動過一次服務後,舊程序沒清乾淨。

快速定位誰占住連接埠
PORT=8080
lsof -nP -iTCP:$PORT -sTCP:LISTEN
sudo kill -15 <PID>
sleep 2
lsof -nP -iTCP:$PORT -sTCP:LISTEN || echo "port released"
角色建議連接埠備註
OpenClaw Gateway8080 或 8443正式環境建議固定,不要頻繁改
內部管理介面3000僅綁定 localhost
Runner callback9090+避免與 Gateway 重疊
本地開發服務5173 / 3001避免借用正式連接埠

如果你要跨區部署,建議把香港節點的網路策略與延遲基準獨立管理(../japan-vs-hong-kong-yuancheng-mac-ci/japan-vs-hong-kong-yuancheng-mac-ci.html),不要直接複製美區防火牆規則。

4. Doctor 深入判讀:哪些 warning 一定要修?

doctor 不是只看 pass/fail。很多 warning 雖然不會立刻炸,但會在流量上升時變成事故。以下是實戰中最值得優先修復的欄位。

診斷項目可忽略?建議
Clock skew > 3s先校時,避免 token 驗證間歇失敗
DNS fallback固定 resolver,降低偶發解析超時
Retry budget low調整上游 timeout 與重試上限
Deprecated key視情況排進近期變更窗口,不要拖版本
將 doctor 結果存檔便於比對
mkdir -p ./diag
openclaw gateway doctor --format json > ./diag/doctor-$(date +%F-%H%M).json
jq '.checks[] | {name,status,message}' ./diag/doctor-*.json
值班提醒:若同時看到 DNS 抖動 + upstream timeout,先處理 DNS。很多 timeout 其實是解析慢,不是服務真的掛掉。

5. 日誌與健康檢查:把「偶發」變成可量化

不要只看單點錯誤,請拉 15 分鐘窗口做對時分析。把 Gateway access log、error log、upstream log 對齊,才能知道誰先出問題。

觀測指標告警門檻處置方向
p95 upstream latency> 1.5s先檢查上游容量與連線池
5xx ratio> 1%按 status code 分流根因
healthcheck flaps> 3 次/10 分鐘放寬探針 timeout 或降低頻率
TLS handshake errors持續上升檢查 SNI、憑證鏈、到期日

6. 網路與 TLS:避免「內網正常、外網失敗」

許多團隊在內網測試都成功,上線後卻失敗,關鍵在於對外路徑多了 WAF、LB、CDN 或額外 TLS 終止層。請逐層驗證,不要一次改三個元件。

TLS 與路由快速驗證
curl -Iv https://gateway.example.com/health
openssl s_client -connect gateway.example.com:443 -servername gateway.example.com
dig +short gateway.example.com
traceroute gateway.example.com

更多網路檢查可參考 OpenClaw Gateway Networking

7. 部署模式:單機、分離、跨區該怎麼選

在資源有限的情況下,先決定部署拓樸。拓樸錯誤,後續優化幾乎都只是補洞。

模式適用情境風險
單機整合PoC、低流量連接埠/記憶體互搶最明顯
Gateway 與 Runner 分離中流量、CI 頻繁需要額外監控與網路規劃
跨區雙閘道多地使用者、低延遲要求設定一致性與權杖同步更複雜
Gateway + OpenHuman 分離Agent 與記憶工作負載並行初期成本增加,但穩定性高

若你在估算成本,可用 ../../../mac-mini-jiage.html 先做月費與風險預算,避免故障後才臨時擴容。

結論:先把可預防的 90% 問題標準化

OpenClaw Gateway 的排障關鍵不是「更會猜」,而是把快篩、連接埠管理、doctor 判讀、日誌對時與網路驗證做成固定流程。只要流程一致,90% 的故障都能在第一輪定位並修復。

建議把本文流程寫進你的值班手冊,並對照官方文件 Gateway Configuration 做版本化維護。

Q1:doctor 全部綠燈,為何還是 timeout?
doctor 主要驗設定與基本連線;尖峰時的上游容量問題仍可能造成 timeout,請加看 latency 與連線池。

Q2:可以把 Gateway 與 Runner 放同一台嗎?
可以,但要固定連接埠映射、限制資源上限,並避免高峰期同時跑大規模 CI 任務。

Q3:連接埠改掉就一定比較安全嗎?
不一定。安全重點是 ACL、TLS、憑證與最小權限,不是只換成冷門連接埠。

Q4:為什麼重啟後偶爾恢復、過一陣子又壞?
通常是根因未解(例如 DNS 或衝突程序),重啟只是短暫清空狀態。

Q5:香港與台灣節點要共用同一組設定嗎?
建議共用 baseline,但保留區域化覆寫(DNS、防火牆、上游端點)以降低跨區風險。

Q6:TLS 錯誤最先要看哪裡?
先看憑證到期與 fullchain,再看 SNI 主機名是否一致。

Q7:何時該做藍綠部署?
當你需要零停機升級、且流量已高到不能接受重啟窗口時,就應導入藍綠切換。

Q8:排障資料要留多久?
至少保留 14~30 天,才能比對版本升級前後與週期性故障模式。

正式上線前,先完成部署路徑 ../yuancheng-mac-openclaw-shicao-meidong-meixi/yuancheng-mac-openclaw-shicao-meidong-meixi.html,並把 OpenHuman 與 Runner 的負載角色拆分(../openhuman-memory-tree-yunduan-mac-openclaw/openhuman-memory-tree-yunduan-mac-openclaw.html../github-actions-ios-ci-mac-man-self-hosted-runner-jia-su-dian/github-actions-ios-ci-mac-man-self-hosted-runner-jia-su-dian.html)。跨區團隊可另外評估香港方案 ../japan-vs-hong-kong-yuancheng-mac-ci/japan-vs-hong-kong-yuancheng-mac-ci.html 與整體費率 ../../../mac-mini-jiage.html,讓穩定性與成本同時可控。