嗨,
我正在 Zeabur 上使用 Hetzner Nürnberg 伺服器 (K3s) 執行一個 Python 服務。我的服務與 Binance (wss://stream.binance.com:9443) 維持著一個持久的出站 WebSocket 連線。
我持續遇到每 7-8 分鐘斷線一次的問題,錯誤訊息為:sent 1011 (internal error) keepalive ping timeout; no close frame received
我已經嘗試過的方法:
- 在 WebSocket 客戶端 (websockets 函式庫) 設定
ping_interval=5 - 設定
ping_timeout=10 - 加入
open_timeout=30 - 重新連線時使用指數退避 (Exponential backoff)
Ping 的修復將斷線頻率從每 3-5 分鐘降低到每 7-8 分鐘,但並未完全解決。這顯示問題出在 K3s 網路層,而非應用程式層。
我的問題是: 在 Hetzner 伺服器上的 K3s 層級,是否針對出站連線設定了 TCP 空閒逾時 (idle timeout) 或 keepalive 策略?如果是的話,是否可以針對持久的 WebSocket 連線將其停用或延長?
我的服務需要 24/7 穩定的出站 WebSocket 連線。重新連線導致記憶體中的狀態每 7-8 分鐘重置一次,這影響了我的應用程式邏輯。
謝謝