Redis noeviction: Yazmalar Durduğunda
“maxmemory-policy noeviction” güvenli görünüyordu. Veri kaybı yok, değil mi?
Ne oldu:
- Redis maxmemory limitine ulaştı
- noeviction politikası: Redis ayakta kaldı ama her yazmayı “OOM command not allowed when used memory > 'maxmemory'” hatasıyla reddetti — çökme yok, yalnızca retler
- Uygulama yeni cache kayıtları yazamadı
- Ama oturum verisini de yazamadı
- Kullanıcılar işlemin ortasında oturumdan düştü
- Ödeme hataları %400 arttı
Asıl sorun:
Harcanabilir cache'i VE kritik oturum verisini aynı Redis instance'ında, aynı eviction politikasıyla saklıyorduk. Her iki politika seçimi de iş yüklerinden birini feda eder: eviction canlı oturumları çöpe atar, noeviction cache'i bloklar. (Redis'teki oturumların kendi operasyonel kurallarına ihtiyaç duyduğunu zaten acı yoldan öğrenmiştik.)
Çözüm:
- Cache ve oturumlar için ayrı Redis instance'ları
- Cache: allkeys-lru (dolunca en eskiyi tahliye et)
- Oturumlar: noeviction + agresif TTL'ler + izleme
- Bellek %80'e ulaştığında alarm
Ders: Eviction politikanız verinizin önemiyle eşleşmeli. Harcanabilir cache ve kritik oturumlar farklı stratejiler gerektirir.
Bu tür olaylar önlenebilir. AWS Yönetilen Hizmetler ekibimiz müşteri ortamlarını yapay zekâ destekli izleme ve nöbetteki kıdemli mühendislerle 7/24 gözetir — böylece bu tür hikâyeler arşivde kalır.