本文介紹Function Compute訪問資料庫失敗的常見原因。
常見原因排查
資料庫連接偶現失敗
如果您訪問資料庫偶現失敗,可按照以下步驟進行原因排查。
資料庫中斷連線時,是否使用
destroy()
替換end()
使用。由於函數執行個體在空閑2~5分鐘左右後,會自動銷毀。使用
end()
方法時,需在資料庫收到查詢結果後,才能斷開MySQL伺服器的串連。如果資料庫未正常中斷連線,會導致下一次串連時逾時。通過VPC訪問資料庫時,是否設定了安全性群組。
使用安全性群組方式訪問資料庫會導致函數串連不穩定,推薦您使用配置IP地址白名單的方式訪問資料庫。
參考資料庫連接必現失敗,逐一排查原因。
資料庫連接必現失敗
如果您訪問資料庫必現失敗,可按照以下步驟排查原因。
在請求的資料庫中尋找串連記錄,確認對應時間段內是否有來自Function Compute的串連請求。
檢查訪問資料庫的使用者名稱和密碼是否正確。
使用者名稱和密碼正確,請跳轉步驟3。
使用者名稱和密碼不正確,請重新輸入正確的使用者名稱或密碼。
登入執行個體並嘗試是否能使用
telnet
命令串連資料庫。檢查您的函數代碼邏輯是否正確。
如果按照以上步驟逐步排查之後,您的問題仍為解決,請加入DingTalk使用者群(DingTalk群號:64970014484),聯絡Function Compute工程師即時溝通處理。
網路問題排查
通過VPC訪問資料庫
請確保建立的資料庫執行個體與訪問資料庫的函數在同一地區。
如果報錯
AccessDenied
,錯誤碼為403,請確保提供對ENI的操作授權。如果報錯
InvalidArgument
,錯誤碼為400,請確保VPC,vSwitch和安全性群組配置正確。請檢查資料庫是否設定了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
命令串連資料庫。如果可以串連,則可以排除資料庫側網路原因。