Поиск соединений, раздувающих память (output buffer, query buffer, 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.