このトピックでは、データベースアクセス障害の一般的な原因と、Function Computeでのデータベースアクセス障害のトラブルシューティング方法について説明します。
一般的な原因のトラブルシューティング
データベースアクセスが時折失敗する
データベースアクセスに失敗することがある場合は、次の手順を実行して原因をトラブルシューティングします。
使用するかどうかを確認する
end()
の代わりにdestroy()
データベースを切断します。関数インスタンスは、約2〜5分間アイドル状態になると自動的に破棄されます。
end()
メソッドを使用すると、データベースがクエリ結果を受信した後にMySQLサーバーが切断されます。 データベースが正しく切断されていない場合、次の接続はタイムアウトします。VPC経由でデータベースにアクセスするときにセキュリティグループが設定されているかどうかを確認します。
データベースにアクセスするときにセキュリティグループが設定されている場合、関数の接続が不安定になる可能性があります。 データベースにアクセスするときは、IPアドレスホワイトリストを設定することを推奨します。
「データベース接続が常に失敗する」を参照してアクセス失敗の原因を確認します。
データベース接続が常に失敗する
データベースにアクセスするときに接続が常に失敗する場合は、次の手順を実行して原因をトラブルシューティングします。
要求されたデータベースの接続レコードを照会し、Function Computeからの接続要求が対応する期間に存在するかどうかを確認します。
データベースへのアクセスに使用されるユーザー名とパスワードが正しいかどうかを確認します。
ユーザ名およびパスワードが正しい場合、ステップ3に進む。
ユーザー名またはパスワードが無効な場合は、有効なユーザー名とパスワードを入力します。
インスタンスにログインして、
telnet
コマンドを実行してデータベースに接続します。telnetを使用して接続を確立できる場合は、ステップ4に進む。
telnetで接続できない場合は、ネットワーク設定を確認してください。 詳細については、「ネットワークの問題のトラブルシューティング」をご参照ください。
関数コードのロジックが正しいかどうかを確認します。
上記の方法を使用してトラブルシューティングを実行した後も問題が解決しない場合は、DingTalkユーザーグループに参加する11721331テクニカルサポートのため。
ネットワークの問題のトラブルシューティング
VPC経由でデータベースにアクセスする
作成したデータベースインスタンスが、データベースにアクセスする関数と同じリージョンにあることを確認してください。
AccessDenied
エラーが報告され、エラーコードが403の場合は、elastic network interface (ENI) に対する権限を付与しているかどうかを確認してください。InvalidArgument
エラーが報告され、エラーコードが400の場合は、VPC、vSwitch、セキュリティグループの設定が有効かどうかを確認します。データベースにIPアドレスホワイトリストが設定されているかどうかを確認します。 ホワイトリストが設定されている場合は、プライベートVPC CIDRブロックとvSwitch CIDRブロックが設定されていることを確認してください。 0.0.0.0/0をホワイトリストに追加して、すべてのIPアドレスからのアクセスを許可します。
セキュリティグループがプライベートCIDRブロックとデータベースのポートからのアウトバウンドトラフィックを許可していることを確認します。
ResourceExhausted
エラーが報告され、エラーコードが429の場合は、vSwitchのIP CIDRブロックで使用可能なIPアドレスが不足しているかどうかを確認します。 自動的に設定されるCIDRブロックのプレフィックス長は24で、使用可能なIPアドレスの総数は252です。 インスタンスの数が多すぎる場合、制限に達する可能性があり、vSwitchのCIDRブロックとセキュリティグループを手動で変更する必要があります。
インターネット経由でデータベースにアクセスする
サービスのインターネットアクセスが有効になっていることを確認します。 詳細については、「ネットワーク設定の構成」をご参照ください。
静的IPアドレスのホワイトリストがデータベースに設定されている場合は、Function Computeで静的パブリックIPアドレスが設定されていることを確認してください。 Function Computeでは、関数を実行するインスタンスはfunction Computeによって動的に割り当てられ、IPアドレスは固定されていません。 インターネット経由でデータベースにアクセスするには、パブリックIPアドレスを設定する必要があります。 詳細については、「静的パブリックIPアドレスの設定」をご参照ください。
データベース側のネットワークの問題
別のサービスでFunction Computeのネットワーク環境と同様のネットワーク環境を設定できます。 次に、
telnet
コマンドを使用してデータベースに接続できるかどうかを確認します。 接続が確立できる場合、データベース側のネットワークは正常です。