Bir Redis gecikme süresi olayının kök nedenini belirlemek ve uygun düzeltmeyi uygulamak için bu referansı kullanın.
Başlamadan Önce
Belirli olaylara inmeden önce şu yaygın nedenleri kontrol edin:
Yavaş komutlar. Tüm anahtarları tarayan komutlar (örneğin,
KEYS) ana iş parçacığını engeller. Bunları bulmak için yavaş sorgu günlüklerini inceleyin. Bkz. Yavaş sorgu günlüklerini sorgulama.Büyük anahtarlar. Büyük anahtarlar, anahtar silme ve sona erme işlemlerini yavaşlatır. Bunları belirlemek için çevrimdışı anahtar analizini kullanın. Bkz. Çevrimdışı anahtar analizi özelliğini kullanma.
Yüksek bellek kullanımı. Kullanılan bellek
maxmemorysınırını aştığında, anahtar silme döngüleri sıkça çalışır. Bkz. Örnek yapılandırmasını değiştirme.
Arka Plan
Redis 2.8.13, son 160 saniyedeki verileri toplayan ve her saniye yalnızca en yüksek gecikme süresine sahip olayı kaydeden gecikme izlemeyi tanıttı.
Tair (Redis OSS uyumlu), tüm komutların yürütme süreleriyle birlikte 27'ye kadar olayı kaydeden ve son üç güne ait gecikme istatistiklerini saklayan gelişmiş bir alternatif olan gecikme içgörülerini sağlar. Olay adları ve bunların gecikme eşikleri için bkz. Yaygın özel olaylar.
Yaygın gecikme olayları
Bazı olaylarda üst-alt ilişki bulunur:
**
AofWrite**, üst olaydır. Veriler append-only file (AOF) dosyasına her yazıldığında, Redis tam olarak üç alt olaydan biriyle birlikteAofWritekaydeder:AofWriteAlone,AofWriteActiveChildveyaAofWritePendingFsync. Belirli nedeni bulmak için alt olayı analiz edin.**
EvictionCycle**, anahtar silme işlemi için üst olaydır. Anahtar silme gecikme süresine neyin neden olduğunu belirlemek içinEvictionDelveEvictionLazyFreeolaylarını birlikte analiz edin.
| Olay | Ne ölçer | Yaygın neden | Ne yapılmalı |
|---|---|---|---|
EvictionCycle |
Anahtar seçimi, silme ve arka plan iş parçacığı bekleme dahil olmak üzere tam bir anahtar silme döngüsü için geçen süre | Birden fazla faktör — nedeni daraltmak için EvictionDel ve EvictionLazyFree olaylarını analiz edin |
Anahtar kullanımını gözden geçirin ve iş verilerini optimize edin. Anahtar silme işlemleri sık gerçekleşiyorsa, bellek kullanımını maxmemory değerinin altında tutmak için örneği ölçeklendirin. |
EvictionDel |
Bir anahtar silme döngüsü sırasında anahtarları silmek için geçen süre | Silinen büyük anahtarlar | Büyük anahtarlardan kaçının. lazyfree-lazy-eviction parametresini yes olarak ayarlayarak eşzamansız anahtar silmeyi etkinleştirin. Anahtar silme işlemleri sık gerçekleşiyorsa örneği ölçeklendirin. |
EvictionLazyFree |
Arka plan iş parçacıklarının belleği serbest bırakmasını beklemek için geçen süre | Arka plan iş parçacıkları belleği serbest bırakırken (örneğin, büyük anahtarları silerek) silinebilir anahtar bulunmaması | maxmemory-policy parametresini kullanarak bellek anahtar silme ilkesini ayarlayın. Anahtar silme işlemleri sık gerçekleşiyorsa örneği ölçeklendirin. |
ExpireCycle |
Bir anahtar sona erme döngüsü için geçen süre | Silinen büyük anahtarlar | Büyük anahtarlardan kaçının. lazyfree-lazy-expire parametresini yes olarak ayarlayarak eşzamansız sona ermeyi etkinleştirin. Konsolda süresi dolmuş verileri düzenli olarak temizleyin. |
ExpireDel |
Bir anahtar sona erme döngüsü sırasında anahtarları silmek için geçen süre | Silinen büyük anahtarlar | Büyük anahtarlardan kaçının. |
AofWrite |
Verileri AOF dosyalarına yazmak için geçen toplam süre | Birden fazla faktör — nedeni daraltmak için AofWriteAlone, AofWriteActiveChild ve AofWritePendingFsync olaylarını analiz edin |
Veri kalıcılığı gerekmiyorsa, appendonly parametresini no olarak ayarlayarak AOF'u devre dışı bırakın. |
AofWriteAlone |
Eşzamanlı alt işlem veya bekleyen fsync olmadan bir AOF yazma işlemi için geçen süre | Yüksek yazma hacmi veya disk performansı darboğazları | AOF gerekmiyorsa, appendonly parametresini no olarak ayarlayın. |
AofWriteActiveChild |
Alt işlemler de diske yazarken bir AOF yazma işlemi için geçen süre | Alt işlem disk G/Ç'sinin AOF yazmalarıyla rekabet etmesi | AOF gerekmiyorsa, appendonly parametresini no olarak ayarlayın. |
AofWritePendingFsync |
Arka planda fsync işlemi devam ederken bir AOF yazma işlemi için geçen süre | Arka plan fsync işleminin AOF yazmalarıyla rekabet etmesi | AOF gerekmiyorsa, appendonly parametresini no olarak ayarlayın. |
Commands |
Normal komutlar (hızlı olarak etiketlenmemiş) için geçen süre | KEYS gibi tüm verileri tarayan komutlar |
Uzun süren komutları bulmak için yavaş sorgu günlüklerini inceleyin. Büyük anahtarları kontrol etmek için çevrimdışı anahtar analizini kullanın. |
FastCommand |
O(1) veya O(log N) karmaşıklığına sahip hızlı komutlar için geçen süre | Büyük miktarda veri kopyalayan hızlı komutlar (örneğin, büyük bir anahtar üzerinde GET) |
Büyük anahtarları belirleyin ve bölün. Bkz. Büyük anahtarları ve sıcak anahtarları belirleme ve yönetme. |
Fork |
fork() çağrısı için geçen süre |
AOF yeniden yazma işlemleri | Veri kalıcılığı gerekmiyorsa, appendonly parametresini no olarak ayarlayarak AOF'u devre dışı bırakın. |