このトピックでは、「プールからリソースを取得できませんでした」エラーの原因と解決策について説明します。
問題の説明
JedisPoolがJavaランタイムで使用されると、Could not get a resource from the pool
が報告されます。
考えられる原因
ApsaraDB for Redisインスタンスのホワイトリストが正しく設定されていません。
別のタイプのエラーが発生しました。
解決策
Cause Exceptionログで、Caused by:
で始まるログを見つけます。 ログの内容に基づいてエラーをトラブルシューティングします。 次のサンプルコードは、ログの例を示します。
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
....
Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR client ip is not in whitelist xxx:xxx
にありません
説明
getStackTrace()
を使用してCaused by:
で開始したログを印刷できない場合は、例外を直接出力するか、getCause()
メソッドを使用してログを印刷します。
ERRクライアントipがホワイトリストxxx:xxxにありません
ApsaraDB for Redisインスタンスのホワイトリストが正しく設定されていません。 ホワイトリストを再設定する必要があります。 詳細については、「データベースのIPアドレスホワイトリストの設定」をご参照ください。
重要
エラーが発生する場合は、セキュリティグループを使用してデータベースにアクセスしているかどうかを確認してください。 セキュリティグループを使用すると、関数への接続が不安定になり、サービスが影響を受けます。 IPアドレスベースのホワイトリストを使用することを推奨します。
その他のエラー
[Timeout waiting for idle object]
や [Pool exhausted]
などの他のエラーが報告された場合は、ApsaraDB for Redisの次のトピックを参照してトラブルシューティングを行います。