Function Compute の関数がデータベースにアクセスする際に発生する障害には、断続的に発生するものと、すべての試行で発生するものの 2 つの明確なパターンがあります。このガイドでは、最も一般的な原因と、それぞれの解決方法について説明します。
断続的な接続障害
データベース接続が断続的に失敗する場合は、以下のチェックを順番に実行してください。
1. 接続を閉じるには、`end()` の代わりに `destroy()` を使用します。
Function Compute インスタンス は、2 ~ 5 分間アクティビティがないと自動的にリサイクルされます。end() メソッド は、接続を閉じる前に MySQL サーバー がクエリ結果を認識するのを待機するため、接続が不整合な状態になり、次の呼び出しが タイムアウト する可能性があります。destroy() を呼び出して、接続を直ちに強制終了してください。
2. Virtual Private Cloud (VPC) 経由でデータベースにアクセスする場合は、セキュリティグループ を IP アドレスホワイトリスト に置き換えます。
データベース側 の セキュリティグループ は、Function Compute からアクセスすると接続を不安定にする可能性があります。代わりに IP アドレスホワイトリスト を使用して、トラフィック を確実に許可してください。
3. 障害 が続く場合は、「[データベース接続が常に失敗する](#database-connection-constantly-fails)」の手順に従ってください。
データベース接続が常に失敗する
すべての接続試行が失敗する場合は、以下の手順を順番に実行してください。
データベース の 接続 レコード で、障害 が発生した タイムウィンドウ を確認します。
Function Compute からの 接続 リクエスト が見つからない場合 → ステップ 2 に進みます。
Function Compute からの 接続 リクエスト が存在する場合 → ステップ 4 に進みます。
ユーザー名 と パスワード を確認します。
認証情報 が正しい場合 → ステップ 3 に進みます。
認証情報 が間違っている場合 → 修正して リトライ します。
Function Compute インスタンス から telnet を使用して ネットワーク接続 をテストします。以下の コマンド を実行し、
<DB_HOST>と<DB_PORT>を ご利用の データベースエンドポイント と ポート に置き換えます。接続 が成功した場合 → ステップ 4 に進みます。
接続 が失敗した場合 → 「ネットワークの問題のトラブルシューティング」の手順に従ってください。
telnet <DB_HOST> <DB_PORT>接続処理の バグ について、ご利用の 機能コード の ロジック を確認します。
Function Compute は、直接使用できる サンプルコード を提供しています。詳細については、「サンプルコード」をご参照ください。
すべての手順を完了しても 問題 が解決しない場合は、DingTalk ユーザーグループ 11721331 に参加して テクニカルサポート を受けてください。
ネットワークの問題のトラブルシューティング
VPC アクセス
データベースインスタンス と 関数 が 同じ リージョン にあることを確認します。
AccessDeniedエラー (エラーコード 403) が表示される場合は、ご利用の 関数 に elastic network interface (ENI) に対する必要な 権限 があるかどうかを確認します。「
InvalidArgument」エラー(エラーコード 400)が表示された場合は、[VPC]、[vSwitch]、および[セキュリティグループ]の構成が有効であることを確認します。データベース で IP アドレスホワイトリスト を 設定 している場合は、VPC プライベート CIDR ブロック と vSwitch CIDR ブロック の両方を含めます。すべての IP アドレス からの トラフィック を許可するには、
0.0.0.0/0を追加します。セキュリティグループ が、データベース の プライベート IP アドレス と ポート で アウトバウンドトラフィック を許可していることを確認します。
ResourceExhaustedエラー (エラーコード 429) が表示される場合は、vSwitch の 使用可能な IP アドレス が不足しています。デフォルト の CIDR ブロック は プレフィックス 長が/24で、252 個の 使用可能なアドレス を提供します。ご利用の 関数 がこの 制限 を超えて スケール する場合は、vSwitch CIDR ブロック を手動で拡張し、それに応じて セキュリティグループ を更新してください。
インターネットアクセス
ご利用の サービス の インターネットアクセス を有効にします。詳細については、「ネットワーク設定 の構成」をご参照ください。
データベース が 静的 IP アドレスホワイトリスト を使用している場合は、ご利用の 関数 に 固定パブリック IP アドレス を 設定 します。Function Compute は IP アドレス を 動的 に 割り当てる ため、静的 IP アドレス がないと、ご利用の 関数 は ホワイトリストチェック に合格できません。詳細については、「固定パブリック IP アドレス の構成」をご参照ください。
データベース側 の ネットワークの問題
問題 が データベース側 にあるかどうかを特定するには、別の サービス で同様の ネットワーク環境 を 設定 し、telnet テスト を実行します。
telnet <DB_HOST> <DB_PORT>接続 が成功した場合、データベース側 の ネットワーク は正常です。