Redis Maceram: Bir Sistemcinin Sabahı - Hayat Kurtaran Terminal Satirlari
Bir sabahın erken saatleriydi... Her zamanki gibi rutin işlerimi yapıyordum. Sunucular kontrol, loglar temiz, sistemde bir sorun yok. Ta ki... Drupal projemde kullandığım Redis sunucusu bir anda çakılana kadar.
Redis yıllardır benim sadık dostumdu. Local'de çalışır, işini yapar, ses etmezdi. Ama o sabah... Kafasına esti ve dedi ki:
"Ben bugün çalışmam ustad!"
Redis servis kontrol:
systemctl status redis
Görkemli bir hata ekranı... Servis ne kapanıyor ne de doğru düzgün açılıyor.
Hemen loglara daldım:
journalctl -u redis --since "1 hour ago"
Sebep? Veritabanı şişmiş! Redis RAM canavarı olmuş, 17 GB'lık dump.rdb dosyası ile sistemi kilitlemiş!
Disk kontrol:
df -h
RAM kontrol:
htop
Gözlerime inanamadım. Cache için kullanılan bir Redis 17 GB mı olur? Hemen aksiyon aldım.
Redis'i kapattım, dosyaları yedekledim:
systemctl stop redis
cp /var/lib/redis/dump.rdb /root/dump.rdb.yedek
cp /var/lib/redis/appendonly.aof /root/appendonly.aof.yedek
mv /var/lib/redis/dump.rdb /var/lib/redis/dump.rdb.kaldir
mv /var/lib/redis/appendonly.aof /var/lib/redis/appendonly.aof.kaldir
Redis'i temiz şekilde ayağa kaldırdım:
systemctl start redis
Peki dert bitti mi? Tabii ki hayır. Akıllı adam hatadan ders çıkarır. Redis'e memory limit koymanın zamanı çoktan gelmişti.
Redis config dosyasına girdim:
nano /etc/redis/redis.conf
Şu ayarları ekledim:
maxmemory 4gb
maxmemory-policy allkeys-lru
Sonrasında servis restart:
systemctl restart redis
Ve o an geldi... Sistem tertemiz, RAM kontrol altında, Redis efendi gibi çalışıyor.
Ne öğrendim bu maceradan?
Redis'i veritabanı gibi kullanmayacaksın
Memory limit koyacaksın
Yedeksiz iş yapmayacaksın
Logları her zaman okuyacaksın
Sabır, soğukkanlılık ve terminal bilgisi ile çözülmeyecek sorun yok
Ve işte böyle bir sabahın sonunda kahvemi aldım, terminale son bir bakış attım:
redis-cli ping
Cevap geldi:
PONG
Ustad gönül rahatlığıyla der ki: "Server ayakta, sistem stabil, hayat güzel."
Bir başka terminal hikayesinde görüşmek üzere!