全球觀察:redis活躍非活躍連接數(shù)統(tǒng)計(jì)及client list說明

2022-12-06 19:10:36 來源:51CTO博客

概念說明

活躍連接是指當(dāng)下正在執(zhí)行命令的連接,非活躍當(dāng)然是相對(duì)的。在redis中判斷當(dāng)前連接是否活躍是通過 內(nèi)置的??client list?? 命令輸出中的idle來判斷

client list字段說明

(kfzops) [root@test-xxx-01-vm ]# redis-cli -h r-xxxxxxxxxxxx.redis.rds.aliyuncs.comr-xxxxxxxxxxxx.redis.rds.aliyuncs.com:6379> client listid=1106439 addr=172.16.0.2:48012 fd=17 name= age=354261 idle=2 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20504 events=r traffic-control=NULL cmd=info user=default type=vpc real_addr=
addr 是指連接到redis實(shí)例的客戶端地址和端口fd 套接字所使用的文件描述符name 客戶端名稱,目前發(fā)現(xiàn)都是為空age 已連接時(shí)長(zhǎng),單位為秒(s)idle 空閑時(shí)長(zhǎng),單位為秒(s)flags 客戶端flag,詳細(xì)說明參考后續(xù) 《客戶端標(biāo)志取值說明》db 客戶端正在使用的數(shù)據(jù)庫(kù)IDsub 頻道訂閱數(shù)量psub 模式匹配的訂閱數(shù)量multi MULTI/EXEC上下文中的命令數(shù)qbuf 輸入緩沖區(qū)大小,單位為字節(jié)(Byte),0 表示沒有分配查詢緩沖區(qū) : 查詢緩沖區(qū)的長(zhǎng)度(字節(jié)為單位, 0 表示沒有分配查詢緩沖區(qū))qbuf-free 輸入緩沖區(qū)剩余大小,單位為字節(jié)(Byte), 0 表示沒有剩余空間obl : 輸出固定緩沖區(qū)大小,單位為字節(jié)(Byte), 0 表示沒有分配輸出緩沖區(qū)oll : 輸出列表包含的對(duì)象數(shù)量(當(dāng)輸出緩沖區(qū)沒有剩余空間時(shí),命令回復(fù)會(huì)以字符串對(duì)象的形式被入隊(duì)到這個(gè)隊(duì)列里)omem : 輸出緩沖區(qū)大小,單位為字節(jié)(Byte), 0 表示沒有剩余空間events 文件描述符事件r:客戶端套接字在事件Loop中可讀。w:客戶端套接字在事件Loop中可寫。cmd 最近一次執(zhí)行的命令

客戶端標(biāo)志取值說明:


(資料圖)

A:盡快關(guān)閉連接。

b:客戶端正在等待阻塞事件。

c:寫入全部回復(fù)后將關(guān)閉連接。

d:受監(jiān)視的鍵已被修改,EXEC命令將失敗。

i:客戶端正在等待虛擬機(jī)I/O操作(已廢棄)。

M:客戶端是主節(jié)點(diǎn)。

N:未設(shè)置特點(diǎn)標(biāo)志。

O:處于監(jiān)視模式的客戶端。

r:客戶端是只讀模式的集群節(jié)點(diǎn)。

S:客戶端是一般模式下的從節(jié)點(diǎn)。

u:客戶端未被阻塞。

U:通過Unix域套接字連接的客戶端。

x:客戶端正在執(zhí)行事務(wù)。

工具腳本

這里也提供一個(gè)工具腳本, 支持密碼和非標(biāo)準(zhǔn)的6379端口

結(jié)果展示如下:

工具代碼如下

#!/usr/bin/env bash# encoding: utf-8#host=""port=""password=""# 沒有參數(shù)則輸出用法提示if [ $# -eq 0 ]then    echo -e "Usage:\n\t$0 host [port] [password]"    exit 0fi#  host/port/passwordif [ $# -eq 3 ]then    host=$1    port=$2    password=$3# host/port elif [ $# -eq 2 ]then    host=$1    port=$2# host and port is 6379else    host=$1    port=6379fi# 使用 redis-cli的絕對(duì)路徑cmd=$(which redis-cli)if [ "x$password" == "x" ]then    check_url="$cmd -h $host -p $port client list"else    check_url="$cmd -h $host -p $port -a $password client list"fi# 阿里云 Redis的 client list 記錄Demo# id=1106452 addr=172.16.2.2:48038 fd=20 name= age=354237 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=66560 events=r traffic-cnotallow=NULL cmd=hmget user=default type=vpc real_addr=printf "%-35s| %-19s| %-19s| %-10s| %-20s| %-16s| %-16s|%s\n" 客戶端連接地址 已連接時(shí)長(zhǎng) 空閑時(shí)長(zhǎng) 客戶端flag db 訂閱 事件 命令$check_url |awk "{printf "%-28s| %-14s| %-14s| %-14s| %-14s| %-14s| %-14s|%s\n", $2, $5, $6, $7, $8, $9, $19, $21}"

參考地址:

1、??https://help.aliyun.com/document_detail/454164.htm?spm=a2c4g.11186623.0.0.529932b8acNZq8#main-107864??

標(biāo)簽: 輸出緩沖區(qū) 剩余空間 正在執(zhí)行

上一篇:Spring for GraphQL入門教程(二)
下一篇:天天時(shí)訊:機(jī)器學(xué)習(xí)--Kmeans聚類算法