私のチームにはLumen(Laravelに基づくマイクロフレームワーク)を使用するプロジェクトが1つあります。 Predisを使用してRedisクラスタを接続し、その上でいくつかのキュージョブを実行します。しかし、時には(我々は再生産することはできません)、システムがスローしません「にCLUSTER SLOTS
のためにプールに残しませ接続を..」我々は長い間研究してきたルーメンでPRedisライブラリを使用している場合、Redisクラスタのクラスタスロットのプールに接続が残っていません
[2017-08-17 14:05:35] bookmark.ALERT: Predis\ClientException: No connections
left in the pool for `CLUSTER SLOTS` in
....../vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php:232
Stack trace:
#0 ....../vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php(260):
Predis\Connection\Aggregate\RedisCluster->queryClusterNodeForSlotsMap(NULL)
#1 ....../vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php(560):
Predis\Connection\Aggregate\RedisCluster->askSlotsMap()
...
例外。問題はLaravelのPredisライブラリと接続プールを維持する方法にあると考えられます。 Redisは何らかの理由で接続をクローズするが、Predisライブラリは接続しようとしたときに接続を再オープンしなかったためです。
、ここで私たちのクラスタ設定構造です:
'redis' => [
'client' => 'predis',
'clusters' => [
// Setting for Queue
'default' => [
'options' => [ 'cluster' => 'redis' ],
[
'host' => 'xxx',
'password' => 'xxx',
'port' => 'xxx',
'timeout' => 0.15,
'read_write_timeout' => 0.15
],
[
'host' => 'xxx',
'password' => 'xxx',
'port' => 'xxx',
'timeout' => 0.15,
'read_write_timeout' => 0.15
],
...
]
]
]
いずれかがそれにアイデアを持っていますか?どうもありがとうございました!