redis高同時接続処理
今日ELKがログを収集する時、収集の失敗を発見して、各方面の原因を探して、最後にredisログの中で新聞の間違いを発見しました:
[2489] 02 Jun 10:43:42 # Error allocating resoures for the client
エラーは、クライアントにリソースを割り当てることができず、redis接続数を表示することです.
クライアントの接続はなんと10000以上に達しています
クライアント接続を確認するには、次の手順に従います.
各フィールドの意味は次のとおりです.
クライアントのidleの空き時間が長すぎて、接続プールが多すぎる接続を維持していることを発見しました.不要な接続をタイムリーに解放する必要があります.
上は一時的な解決ですが、
最終的な解決策は、プロファイルで次のように変更されます.
timeout 30
接続の再表示:
接続数が大幅に減少
接続の詳細の表示
idleの時間は30秒に制限されています
[2489] 02 Jun 10:43:42 # Error allocating resoures for the client
エラーは、クライアントにリソースを割り当てることができず、redis接続数を表示することです.
# redis-cli info | grep connected
connected_clients:10136
connected_slaves:0
クライアントの接続はなんと10000以上に達しています
クライアント接続を確認するには、次の手順に従います.
redis 127.0.0.1:6379> client list
addr=10.247.64.115:52834 fd=5 idle=2144 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
addr=127.0.0.1:38484 fd=7 idle=0 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=blpop
addr=10.105.1.2:53125 fd=8 idle=2144 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
addr=10.105.1.3:32639 fd=9 idle=2144 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
addr=10.105.1.4:57134 fd=10 idle=2144 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
addr=10.105.1.5:53126 fd=11 idle=2144 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
addr=10.105.1.7:8887 fd=12 idle=2144 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
各フィールドの意味は次のとおりです.
addr:
fd:
idle:
flags: flag
db: ID
sub:
psub:
multi:
qbuf: ( , 0 )
qbuf-free: ( , 0 )
obl: ( , 0 )
oll: ( , )
omem:
events:
cmd:
クライアントのidleの空き時間が長すぎて、接続プールが多すぎる接続を維持していることを発見しました.不要な接続をタイムリーに解放する必要があります.
redis 127.0.0.1:6379> CONFIG SET timeout 30
OK
上は一時的な解決ですが、
最終的な解決策は、プロファイルで次のように変更されます.
timeout 30
接続の再表示:
# redis-cli info | grep connected
connected_clients:1137
connected_slaves:0
接続数が大幅に減少
接続の詳細の表示
redis 127.0.0.1:6379> client list
addr=127.0.0.1:38484 fd=7 idle=0 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=blpop
addr=10.105.1.150:39742 fd=269 idle=29 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
addr=10.105.1.226:53291 fd=5 idle=31 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
idleの時間は30秒に制限されています