메모리를 부풀리는 연결 찾기 (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), output buffer(omem), query buffer(qbuf) 기준으로 정렬한다. pub/sub 연결과 버퍼 한도를 보여 주며, 클라이언트 메모리 전체 상한을 설정한다.
사용 시점
데이터 증가 없이 used_memory가 증가할 때, mem_clients_normal이 높게 보일 때, 또는 소비가 느린 pub/sub/MONITOR 클라이언트가 메모리를 채울 때.
주의
큰 omem은 보통 결과를 느리게 읽는 클라이언트를 가리킨다(큰 KEYS/HGETALL 응답, 느린 pub/sub 구독자, 열어 둔 MONITOR). maxmemory-clients를 초과하면 메모리를 가장 많이 가진 클라이언트가 경고 없이 닫힌다. replica 및 master 링크는 제외되지만 애플리케이션 연결은 끊길 수 있다. 중요한 연결에는 CLIENT NO-EVICT on을 사용한다.