全部產品
Search
文件中心

Function Compute:資料庫訪問失敗的常見原因

更新時間:Aug 07, 2024

本文介紹Function Compute訪問資料庫失敗的常見原因。

常見原因排查

資料庫連接偶現失敗

如果您訪問資料庫偶現失敗,可按照以下步驟進行原因排查。

  1. 資料庫中斷連線時,是否使用destroy()替換end()使用。

    由於函數執行個體在空閑2~5分鐘左右後,會自動銷毀。使用end()方法時,需在資料庫收到查詢結果後,才能斷開MySQL伺服器的串連。如果資料庫未正常中斷連線,會導致下一次串連時逾時。

  2. 通過VPC訪問資料庫時,是否設定了安全性群組。

    使用安全性群組方式訪問資料庫會導致函數串連不穩定,推薦您使用配置IP地址白名單的方式訪問資料庫。

  3. 參考資料庫連接必現失敗,逐一排查原因。

資料庫連接必現失敗

如果您訪問資料庫必現失敗,可按照以下步驟排查原因。

  1. 在請求的資料庫中尋找串連記錄,確認對應時間段內是否有來自Function Compute的串連請求。

    • 資料庫中無Function Compute串連請求,請跳轉步驟2

    • 資料庫中有Function Compute串連請求,請跳轉步驟4

  2. 檢查訪問資料庫的使用者名稱和密碼是否正確。

    • 使用者名稱和密碼正確,請跳轉步驟3

    • 使用者名稱和密碼不正確,請重新輸入正確的使用者名稱或密碼。

  3. 登入執行個體並嘗試是否能使用telnet命令串連資料庫。

    • 可以串連,請跳轉步驟4

    • 無法串連,請檢查網路問題。具體操作,請參見網路問題排查

  4. 檢查您的函數代碼邏輯是否正確。

如果按照以上步驟逐步排查之後,您的問題仍為解決,請加入DingTalk使用者群(DingTalk群號:64970014484),聯絡Function Compute工程師即時溝通處理。

網路問題排查

  • 通過VPC訪問資料庫

    • 請確保建立的資料庫執行個體與訪問資料庫的函數在同一地區。

    • 如果報錯AccessDenied,錯誤碼為403,請確保提供對ENI的操作授權。

    • 如果報錯InvalidArgument,錯誤碼為400,請確保VPCvSwitch安全性群組配置正確。

    • 請檢查資料庫是否設定了IP地址白名單。如果設定了白名單,則需要設定相應的VPC內網IP位址區段和交換器內網IP位址區段。您可以將白名單設定為0.0.0.0/0,允許所有IP地址訪問。更多資訊,請參見設定資料庫訪問IP地址白名單

    • 請確保安全性群組出口方向允許存取資料庫的連接埠和內網IP位址區段。

    • 如果報錯ResourceExhausted,錯誤碼為429,請檢查交換器的IP網段內是否可用IP地址數量不足。自動設定提供的網路前置長度為24,可用IP地址總數量為252個。如果執行個體數量過多,有可能會超出限制。需手動調整交換器IP地址網段,以及對應的安全性群組。

  • 通過公網訪問資料庫

    • 請確保服務的網路設定中已開啟公網訪問。更多資訊,請參見配置網路

    • 如果資料庫設定了固定IP地址白名單,請確保為Function Compute配置固定公網IP地址。Function Compute中,運行函數的執行個體由Function Compute動態分配,IP地址不固定。使用公網訪問資料庫,需要配置固定公網IP地址

  • 資料庫側網路原因

    您可以在其他服務側配置與Function Compute類似的網路環境,並嘗試是否能使用telnet命令串連資料庫。如果可以串連,則可以排除資料庫側網路原因。