Watch at Ease看見世界,讀懂生活。

科技 · 實用指南

curl 錯誤 56「Recv failure」?重試前先定位重設階段

「Connection reset by peer」只證明接收路徑突然終止,無法指出是哪台機器或程序造成。先保存實際 curl 執行環境、位元組方向與最後完成的協定階段。

原創示意圖:curl錯誤56的連線、交換與重設階段。
原創示意圖:重試前保存最後完成階段。 Watch at Ease

「Connection reset by peer」只證明接收路徑突然終止,無法指出是哪台機器或程序造成。先保存實際 curl 執行環境、位元組方向與最後完成的協定階段。

CURLE_RECV_ERROR 是錯誤碼56,表示接收網路資料失敗。 TCP重設可來自端點或路徑設備;curl本身無法證明發送者。

1. 安全凍結失敗請求

記錄 curl 執行檔、`curl -V`、主機與連接埠、代理變數、容器或服務身分、DNS結果及移除秘密的命令;保存錯誤56、時間、請求ID與收發位元組。

重試前判斷方法與副作用。POST、PUT或上傳即使沒收到回應,也可能已在伺服器執行;先用冪等鍵或核對狀態。

2. 標出最後完成階段

用 `--verbose` 或移除秘密的時間追蹤做一次受控重現,標記最後確認的TCP、CONNECT、TLS、請求標頭、請求本文、回應標頭或回應本文。

方向很重要;上傳中重設與收到部分回應後重設不同。保存長度、傳輸編碼和位元組數,不保存憑證或敏感本文。

3. 關聯連線責任方

以時間戳、連線端點、主機、協定和請求ID對齊來源站、反向代理、負載平衡與出口紀錄。TCP重設不一定來自來源應用程式。

直連與代理結果不同時一次只比一個變數;另一用戶端成功前先證明DNS、地址族、代理、TLS、HTTP版本和負載相同。

4. 一次只改一個原因

修復擁有第一個矛盾證據的邊界:讓伺服器完整讀取或明確拒絕、修正代理路由或閒置策略、處理崩潰程序或協定預期。不要盲目關閉TLS驗證。

只在確認操作語意和已安裝curl版本的重試條件後使用 `--retry`;成功重試仍可能掩蓋重複工作。

5. 驗收相同路徑與負載

從同一使用者、執行檔、網路和負載重測;要求退出0、正確狀態、完整本文或校驗和、對端無重設,並再次成功。

保存最後正常階段、雙向位元組、重設觀察者、關聯紀錄、單一變更與驗收結果。

原創示意圖:連線重設的觀察、關聯與驗收閘門。
原創示意圖:定位責任方並證明修復。 Watch at Ease