Skip to content

Redis — алерт при высоком mem-fragmentation-ratio

Redis работает, но `mem_fragmentation_ratio > 1.5` — реальное использование памяти намного больше отчёта `used_memory_human`. OOM придёт внезапно.

Рецепт

bash
#!/usr/bin/env bash
# /etc/cron.d/redis-frag
# */5 * * * * root /opt/redis-frag.sh

HOST=${REDIS_HOST:-127.0.0.1}
PORT=${REDIS_PORT:-6379}
THRESH=${THRESH:-1.5}                # alert above 1.5

INFO=$(redis-cli -h "$HOST" -p "$PORT" INFO memory)
RATIO=$(echo "$INFO" | awk -F: '/mem_fragmentation_ratio/{gsub(/\r/,"",$2); print $2}')
USED=$(echo "$INFO"  | awk -F: '/used_memory_human/{gsub(/\r/,"",$2); print $2}')

# Bash floats: use bc
if (( $(echo "$RATIO > $THRESH" | bc -l) )); then
  echo "redis-frag: ratio=$RATIO used=$USED (threshold $THRESH)"
  curl -fsS "$HEARTBEAT_URL" --data "ratio=$RATIO,used=$USED"
  exit 2
fi
echo "OK (ratio=$RATIO used=$USED)"

То же самое в Enterno.io

Заверните в Enterno heartbeat — увидите тренд fragmentation за 30 дней и сможете планировать MEMORY PURGE или рестарт за неделю до OOM.

Настроить HTTP monitor → ← Все рецепты

Похожие рецепты