DBAtlas · Atlas de operaciones de bases de datos

Encontrar conexiones que inflan la memoria (output buffer, query buffer, maxmemory-clients)

RedisMemoria

Comando

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%

Qué hace

Ordena las conexiones por memoria total (tot-mem), output buffer (omem) y query buffer (qbuf); muestra las conexiones pub/sub y los límites de buffer; fija un límite superior global para la memoria de clientes.

Cuándo usarlo

Cuando used_memory crece sin que crezcan los datos, mem_clients_normal parece alto o un cliente pub/sub/MONITOR que consume despacio llena la memoria.

Precaución

Un omem grande suele apuntar a un cliente que lee los resultados despacio (respuesta grande de KEYS/HGETALL, suscriptor pub/sub lento, un MONITOR que se dejó abierto). Al superar maxmemory-clients, los clientes que más memoria tienen se cierran sin aviso; los enlaces de réplica y master están excluidos, pero las conexiones de la aplicación pueden caer. Use CLIENT NO-EVICT on para las conexiones críticas.

Abrir en DBAtlas →

Relacionado