redisサーバに接続されているクライアントの管理

3903 ワード

一、redis serverはredisクライアントを接続するコマンドを管理する
1.redisサービス側に接続されているすべてのクライアントの接続情報を表示する
コマンドの表示:client list
#       redis      
127.0.0.1:6379> CLIENT list 
id=3 addr=127.0.0.1:35878 fd=5 name= age=75 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
id=4 addr=192.168.16.128:48120 fd=6 name= age=68 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=30 omem=529848 events=r cmd=keys
id=5 addr=192.168.16.128:48124 fd=7 name= age=51 idle=48 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=keys
id=6 addr=127.0.0.1:35880 fd=8 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=NULL

クライアント情報の説明:
(1)顧客の基本識別情報
id:クライアント接続の一意の識別であり、このidはredisの接続が増加するにつれてredisを再起動して0にリセットされる
add:クライアント接続ipとポート
fd:socketのファイル記述子
name:クライアントの名前、変更可能
(2)キャッシュ領域情報の入力:qbuf(総容量)、qbuf-free(残容量)
入力キャッシュ領域の役割はクライアントから送信されたコマンドを一時保存することであり、redisは入力キャッシュ領域からコマンドを引き出して実行し、入力キャッシュ取得サイズは入力内容のサイズによって動的に調整されるが、各クライアントのサイズは1 gを超えないように要求され、それを超えるとクライアントは閉じられる.
キャッシュ領域の監視と最適化を入力:
入力キャッシュ領域のサイズはmaxmemoryではありません.入力キャッシュ領域とredisで使用されるメモリサイズがmaxmemoryの制限を超えると、データの損失、キー値の淘汰、OOMが発生する可能性があります.これにより、入力キャッシュ領域を監視できます.
モニタコマンド:client list
             Info clients
#   info  clients, client_biggest_input_buf          
127.0.0.1:6379> INFO clients
# Clients
connected_clients:4
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

(3)出力キャッシュ領域:obl(固定キャッシュ領域長)、oll(ダイナミックキャッシュ領域長)、omem(使用バイト数)
出力キャッシュ領域は、コマンド実行の結果を保存してクライアントに返し、redisとクライアントのインタラクティブな戻り結果にキャッシュを提供する役割を果たす.入力キャッシュ領域に対して、出力キャッシュ領域のサイズを設定できます(パラメータcllient-output-buffer-limitで設定します).出力キャッシュ領域のクライアントは3種類に分けられる(通常クライアント、パブリッシュサブスクリプションクライアント、slaveクライアント).
出力キャッシュ領域は、固定出力キャッシュ領域(16 kb、比較的小さな実行結果を返し、バイト配列を用いる)と動的キャッシュ領域(大きな結果を返し、使用することリストを返す)からなり、固定キャッシュ領域が遅いとredisの新しい戻り結果が動的キャッシュ領域のキューに格納され、キュー内の各オブジェクトが各戻り結果である.
出力キャッシュ領域のモニタは入力キャッシュ領域と同じで、「client_longest_output_Listは、出力キャッシュ領域リストの最大オブジェクト数を表します.
(4)クライアントの生存状態
age:クライアント接続時間
idle:クライアントの最近の空き時間.
(5)クライアントのタイプ
Flagは、現在のクライアントのタイプを表します.一般的なクライアントのタイプは次のとおりです.
N:一般クライアント
M:現在のクライアントはmasterノードです
S:現在のクライアントはslaveノード
o:現在のクライアントがmonitorコマンドを実行しています
x:現在のクライアントがトランザクションを実行しています
b:現在のクライアントはブロックイベントを待っている
u:クライアントがブロックされていない
c:完全出力に返信後、接続を閉じる
A:できるだけ早く接続を閉じる
(6)その他のパラメータの説明
db:現在のクライアントが使用しているデータベースのインデックスの下付き
Multi:現在のトランザクションで実行されているコマンドの数
events:ファイル記述子イベント、rとwはそれぞれクライアントソケットの読み取りと書き込みを表す
cmd:現在のクライアントが最後に実行したコマンド
2、接続クライアントの名前を取得し、クライアントの名前を変更する
接続クライアント名の変更:CLIENT SETNAME
接続クライアントの名前の取得:CLIENT GETNAME
#              
192.168.16.129:6379> CLIENT SETNAME dayi123
OK
#              
192.168.16.129:6379> CLIENT GETNAME
"dayi123"

3、接続したクライアントを殺す
コマンド:CLIENT KILL
#      127.0.0.1:3587
192.168.16.129:6379> CLIENT KILL 127.0.0.1:35878
OK

4、クライアントのブロック
コマンド:CLIENT PAUSE timeout(ミリ秒)
#      10 
192.168.16.129:6379> CLIENT PAUSE 10000
OK

Clinet pauseは、通常およびパブリッシュサブスクリプションクライアントにのみ有効であり、プライマリ・スレーブ・レプリケーションには無効です.
5.redisが実行中のコマンドを監視する
コマンド:MONITOR
#   redis       
192.168.16.129:6379> MONITOR
OK
1532152182.921718 [0 127.0.0.1:35880] "ping"
1532152189.738998 [0 127.0.0.1:35880] "DBSIZE"

二、redisサービスのクライアント接続に関する構成
1、timeout
クライアントのアイドル接続のタイムアウト時間を検出し、デフォルトtimeout=0です.
2、maxclients
クライアントの最大接続数、デフォルトは10000
3、tcp-keepalive
tcp接続の活性を検出する周期は、デフォルト値が0で、60に設定することを推奨します.redisは、設定された期間内に作成されたtcpを活性に検出し、大量の接続がシステムリソースを占有することを防止します.
4、tcp-backlog
tcp接続キューのサイズを設定するために使用されます.デフォルト値は511で、このパラメータはオペレーティングシステムの影響を受けます.