blog

๐Ÿ” Redis ์—ฐ๊ฒฐ ์ƒํƒœ ํ†ต๊ณ„ ๋ถ„์„ ๋ช…๋ น์–ด

๋‚ ์งœ: 2025-07-22

๋ชฉ๋ก์œผ๋กœ


1. ๊ธฐ๋ณธ ํ†ต๊ณ„ ์ •๋ณด

# ์ „์ฒด ์—ฐ๊ฒฐ ์ˆ˜ ํ™•์ธ
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | wc -l

# ์—ฐ๊ฒฐ๋œ ํด๋ผ์ด์–ธํŠธ ์ˆ˜
redis-cli -h MY_REDIS_HOST -p 6379 info | grep connected_clients

2. ํด๋ผ์ด์–ธํŠธ๋ณ„ ์ƒ์„ธ ๋ถ„์„

# ํด๋ผ์ด์–ธํŠธ IP๋ณ„ ์—ฐ๊ฒฐ ์ˆ˜ ํ†ต๊ณ„
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | grep -o "addr=[^ ]*" | cut -d= -f2 | cut -d: -f1 | sort | uniq -c | sort -nr

# ํด๋ผ์ด์–ธํŠธ๋ณ„ ๋ช…๋ น์–ด ํ†ต๊ณ„
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | grep -o "cmd=[^ ]*" | cut -d= -f2 | sort | uniq -c | sort -nr

# ํด๋ผ์ด์–ธํŠธ๋ณ„ DB ์‚ฌ์šฉ ํ†ต๊ณ„
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | grep -o "db=[^ ]*" | cut -d= -f2 | sort | uniq -c | sort -nr

3. ์—ฐ๊ฒฐ ์ƒํƒœ๋ณ„ ๋ถ„์„

# idle ์‹œ๊ฐ„๋ณ„ ํด๋ผ์ด์–ธํŠธ ์ˆ˜ (์˜ค๋ž˜ ์‰ฌ๊ณ  ์žˆ๋Š” ์—ฐ๊ฒฐ ํ™•์ธ)
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | grep -o "idle=[^ ]*" | cut -d= -f2 | sort -n | uniq -c

# age ์‹œ๊ฐ„๋ณ„ ํด๋ผ์ด์–ธํŠธ ์ˆ˜ (์—ฐ๊ฒฐ ์ง€์† ์‹œ๊ฐ„)
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | grep -o "age=[^ ]*" | cut -d= -f2 | sort -n | uniq -c

4. ๋ฌธ์ œ ์—ฐ๊ฒฐ ์‹๋ณ„

# 60์ดˆ ์ด์ƒ idle์ธ ์—ฐ๊ฒฐ๋“ค (์ž ์žฌ์  ๋ฌธ์ œ ์—ฐ๊ฒฐ)
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | awk -F' ' '{for(i=1;i<=NF;i++) if($i~/^idle=/) {split($i,a,"="); if(a[2]>60) print $0}}'

# 1์‹œ๊ฐ„ ์ด์ƒ ์—ฐ๊ฒฐ๋œ ํด๋ผ์ด์–ธํŠธ๋“ค
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | awk -F' ' '{for(i=1;i<=NF;i++) if($i~/^age=/) {split($i,a,"="); if(a[2]>3600) print $0}}'

5. Celery ๊ด€๋ จ ์—ฐ๊ฒฐ ๋ถ„์„

# BRPOP ๊ด€๋ จ ์—ฐ๊ฒฐ ํ™•์ธ (Celery ์›Œ์ปค)
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | grep -i "brpop\|block"

# ํŠน์ • IP ๋Œ€์—ญ์˜ ์—ฐ๊ฒฐ ์ˆ˜ (Celery ์„œ๋ฒ„ IP ํ™•์ธ)
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | grep "10.50." | wc -l

6. ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง

# ์‹ค์‹œ๊ฐ„ ์—ฐ๊ฒฐ ์ˆ˜ ๋ชจ๋‹ˆํ„ฐ๋ง
watch -n 5 'redis-cli -h MY_REDIS_HOST -p 6379 info | grep connected_clients'

# ์‹ค์‹œ๊ฐ„ ํด๋ผ์ด์–ธํŠธ ๋ชฉ๋ก ๋ชจ๋‹ˆํ„ฐ๋ง (์ƒ์œ„ 10๊ฐœ)
watch -n 10 'redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | head -10'

7. ์—ฐ๊ฒฐ ์ •๋ฆฌ (์ฃผ์˜: ์„œ๋น„์Šค ์ค‘๋‹จ ๊ฐ€๋Šฅ)

# ํŠน์ • ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์ข…๋ฃŒ (client-id ํ•„์š”)
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT KILL ID <client-id>

# 60์ดˆ ์ด์ƒ idle์ธ ๋ชจ๋“  ์—ฐ๊ฒฐ ์ข…๋ฃŒ (์œ„ํ—˜!)
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT KILL TYPE normal

8. ์ข…ํ•ฉ ๋ถ„์„ ์Šคํฌ๋ฆฝํŠธ

# ํ•œ ๋ฒˆ์— ๋ชจ๋“  ํ†ต๊ณ„ ๋ณด๊ธฐ
echo "=== Redis ์—ฐ๊ฒฐ ์ƒํƒœ ๋ถ„์„ ==="
echo "์ด ์—ฐ๊ฒฐ ์ˆ˜: $(redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | wc -l)"
echo ""
echo "IP๋ณ„ ์—ฐ๊ฒฐ ์ˆ˜:"
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | grep -o "addr=[^ ]*" | cut -d= -f2 | cut -d: -f1 | sort | uniq -c | sort -nr | head -10
echo ""
echo "๋ช…๋ น์–ด๋ณ„ ํ†ต๊ณ„:"
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | grep -o "cmd=[^ ]*" | cut -d= -f2 | sort | uniq -c | sort -nr
echo ""
echo "60์ดˆ ์ด์ƒ idle์ธ ์—ฐ๊ฒฐ ์ˆ˜:"
redis-cli -h MY_REDIS_HOST -p 6379 CLIENT LIST | grep -o "idle=[^ ]*" | cut -d= -f2 | awk '$1 > 60' | wc -l

๊ธฐํƒ€

# Redis ํƒ€์ž„์•„์›ƒ ์„ค์ • ํ™•์ธ
redis-cli -h MY_REDIS_HOST -p 6379 CONFIG GET timeout
redis-cli -h MY_REDIS_HOST -p 6379 CONFIG GET tcp-keepalive

# ์—ฐ๊ฒฐ ์ˆ˜ ๋ชจ๋‹ˆํ„ฐ๋ง
watch -n 5 'redis-cli -h MY_REDIS_HOST -p 6379 info | grep connected_clients'

์ด ๋ช…๋ น์–ด๋“ค์„ ์‚ฌ์šฉํ•ด์„œ ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ๋“ค์ด ์—ฐ๊ฒฐ์„ ๋งŽ์ด ์ ์œ ํ•˜๊ณ  ์žˆ๋Š”์ง€, ์–ด๋–ค ๋ช…๋ น์–ด๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š”์ง€, ์˜ค๋ž˜ ์‰ฌ๊ณ  ์žˆ๋Š” ์—ฐ๊ฒฐ์ด ์žˆ๋Š”์ง€ ๋“ฑ์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋ชฉ๋ก์œผ๋กœ