DBAtlas · 数据库运维图谱

查找撑大内存的连接(输出缓冲区、查询缓冲区、maxmemory-clients)

Redis内存

命令

INFO clients
# Top 10 connections by tot-mem (tot-mem, omem, qbuf, id, addr, user, cmd, age):
redis-cli -h redis1 -p 6379 CLIENT LIST | awk '{for(i=1;i<=NF;i++){split($i,a,"="); f[a[1]]=a[2]} print f["tot-mem"], f["omem"], f["qbuf"], f["id"], f["addr"], f["user"], f["cmd"], f["age"]}' | sort -rn | head -10
CLIENT LIST TYPE pubsub
CONFIG GET client-output-buffer-limit
# Upper limit for the total memory of all clients (largest clients are closed when exceeded):
CONFIG SET maxmemory-clients 5%

作用

按总内存(tot-mem)、输出缓冲区(omem)和查询缓冲区(qbuf)对连接排序;显示 pub/sub 连接和缓冲区限制;为客户端内存设置总体上限。

适用场景

used_memory 增长而数据没有增长、mem_clients_normal 偏高,或消费缓慢的 pub/sub/MONITOR 客户端占满内存时。

注意

omem 很大通常说明某个客户端读取结果很慢(大型 KEYS/HGETALL 回复、缓慢的 pub/sub 订阅者、未关闭的 MONITOR)。超过 maxmemory-clients 时,占用内存最多的客户端会被无预警关闭;副本和主节点链路不受影响,但应用连接可能被断开。对关键连接使用 CLIENT NO-EVICT on。

在 DBAtlas 中打开 →

相关内容