DBAtlas · Atlas de operações de banco de dados

Encontrar conexões que inflam a memória (output buffer, query buffer, maxmemory-clients)

RedisMemória

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%

O que faz

Ordena as conexões por memória total (tot-mem), output buffer (omem) e query buffer (qbuf); mostra as conexões pub/sub e os limites de buffer; define um limite superior geral para a memória dos clientes.

Quando usar

Quando used_memory cresce sem crescimento dos dados, mem_clients_normal parece alto ou um cliente pub/sub/MONITOR que consome devagar enche a memória.

Atenção

Um omem grande geralmente indica um cliente lendo resultados devagar (resposta grande de KEYS/HGETALL, assinante pub/sub lento, um MONITOR deixado aberto). Quando maxmemory-clients é excedido, os clientes que mais ocupam memória são fechados sem aviso; os vínculos de réplica e master são excluídos, mas as conexões da aplicação podem cair. Use CLIENT NO-EVICT on para conexões críticas.

Abrir no DBAtlas →

Relacionados