Cloud SQL 定期出現連線操作錯誤:(2062,「Cloud SQL 套接字開啟失敗並發生錯誤:傳輸端點未連線」)

Cloud SQL 定期出現連線操作錯誤:(2062,「Cloud SQL 套接字開啟失敗並發生錯誤:傳輸端點未連線」)

定期連接第二代 MySQL 伺服器時會收到此錯誤:

OperationalError: (2062, 'Cloud SQL socket open failed with error: Transport endpoint is not connected')

這種情況會持續約 10 分鐘,然後消失。

我能找到的與 Cloud SQL 相關的此錯誤的唯一參考是它可能與連接限制有關(https://groups.google.com/d/msg/google-cloud-sql-discuss/sdeD17oDBOQ/wtTewl4-EgAJ)但在一個 TaskQueue 任務之外的實例幾乎沒有發生任何其他事情,因此我發現我們不太可能達到每個實例 12 個限制(並且絕對不是 4k 總體限制)。

導致此異常的程式碼使用與應用程式其餘部分相同的資料庫設置,並且只是嘗試SELECT按主鍵進行行(因此是一個小查詢)。

在資料庫日誌中有很多錯誤條目,如下所示。

[Note] Aborted connection 39643 to db: 'my_schema' user: 'root' host: 'cloudsqlproxy~<instance_ip>' (Got an error reading communication packets)

但我不確定它們是否相關,因為它們在一天中非常一致地發生,上述錯誤僅在特定時間發生約 10 分鐘。

這僅在升級到第二代 Cloud SQL 後開始。

還有其他人看過這個或知道更多嗎?

答案1

事實證明,這個問題的根源是連接限制,正如問題中連結的 Google 網路論壇聊天最初建議的那樣。

該錯誤的出現是因為 Pipelines API 使用 webapp,而應用程式的其餘部分使用 Django。由於 Django 為我們關閉了連接,因此沒有代碼可以手動處理它,但是那些通過 webapp 並訪問資料庫(使用 Django 的連接代碼)的路由使它們保持打開狀態,導致最終達到限制。

相關內容