すべてのプロダクト
Search
ドキュメントセンター

Function Compute:JedisPoolを使用するときに「プールからリソースを取得できませんでした」と報告された場合はどうすればよいですか?

最終更新日:Sep 11, 2024

このトピックでは、「プールからリソースを取得できませんでした」エラーの原因と解決策について説明します。

問題の説明

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の次のトピックを参照してトラブルシューティングを行います。