はじめに
Laravelにて開発中、以下のようなエラーが発生したため、その原因と対処法を簡単に記します。
laravel.log
No connections available in the pool {"exception":"[object] (Predis\\ClientException(code: 0): No connections available in the pool at /var/www/application/vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php:337)...
エラーメッセージより
Redisの接続に異常がある
と見当がつく。
原因
Redisへの接続情報に誤りがあった。
具体的には、Redisのホスト名が誤っていた。
根本原因は、AWS Systems Managerのパラメータストアで管理していた、Redisのホスト名に関する変数の値が古いままとなっていた。
対処法
- Laravelの.envを確認。
- Redis接続情報とAWSのElastiCacheにて使用しているRedis情報を照合。
- ホスト名に誤り発見。「REDIS_HOST=」の部分。
- Laravelの.env修正。
- しかし直らず。
- Laravelの.envの作成元であるphp-fpmを確認。
- 該当部分の設定も変更。同じく「REDIS_HOST=」の部分。
- php-fpm再起動。
sudo service php-fpm restart
- 直った。
蛇足
php-fpm管理の環境変数初期設定にはAWS Systems Managerを利用していた。
当エラー発生前にEC2インスタンスの再起動が発生しており、AWS Systems ManagerのRedisホスト名が古いままであり実際の値と異なっていたため、Redisへの接続に不具合が生じることとなった。
よって根本解決として、AWS Systems ManagerのRedisホストの変数名を新しいものへと変更した。
終わりです。