Redis için Azure Cache sunucu tarafı sorunlarını giderme
Bu bölümde, redya ya da barındıran sanal makineler için Azure önbelleğindeki bir koşul nedeniyle oluşan sorun giderme sorunları ele alınmaktadır.
- Redis sunucusunda bellek baskısı
- Yüksek CPU kullanımı veya sunucu yükü
- Uzun süre çalışan komutlar
- Sunucu tarafı bant genişliği sınırlaması
Not
Bu kılavuzdaki sorun giderme adımlarından bazıları Redsıs komutları çalıştırma ve çeşitli performans ölçümlerini izleme yönergelerini içerir. Daha fazla bilgi ve yönergeler için ek bilgi bölümündeki makalelere bakın.
Redis sunucusunda bellek baskısı
Sunucu tarafında bellek baskısı, isteklerin işlenmesini geciktirebileceği tüm performans sorunlarına yol açar. Bellek baskısı ne zaman olursa, sistem diske veri sayfası verebilir. Bu sayfa hatalı , sistemin önemli ölçüde yavaşlamasına neden olur. Bu bellek basıncının birkaç olası nedeni vardır:
- Önbellek neredeyse kapasitesinin üst sınırına kadar verilerle dolmuştur.
- Redis yüksek bellek parçalanmasıyla karşılaşıyor. Bu parçalanma çoğunlukla büyük nesneler depolanmasından kaynaklanır çünkü redin küçük nesneler için iyileştirildi.
Redin, bu sorunu belirlemenize yardımcı olabilecek Info komutu aracılığıyla iki istatistik ortaya çıkarır: "used_memory" ve "used_memory_rss". Portalı kullanarak bu ölçümleri görüntüleyebilirsiniz .
Bellek kullanımını iyi durumda tutmaya yardımcı olmak için yapabileceğiniz birkaç değişiklik vardır:
- Bir bellek Ilkesi yapılandırın ve anahtarlarınızın süre sonu zamanlarını ayarlayın. Ortamınızda parçalanma varsa bu ilke yeterli olmayabilir.
- Bellek parçalanmasını dengelemek için yeterince büyük olan MaxMemory ile ayrılmış bir değer yapılandırın .
- Büyük önbelleğe alınmış nesnelerinizi daha küçük ilgili nesnelere bölün.
- Olası etkileri hakkında önceden bilgi sahibi olmak için kullanılan bellek gibi ölçümlerle ilgili uyarılar oluşturun.
- Daha fazla bellek kapasitesine sahip daha büyük bir önbellek boyutuna ölçeklendirin .
- Daha fazla bellek kapasitesine sahip daha büyük bir önbellek boyutuna ölçeklendirin . Daha fazla bilgi için bkz. redin planlama hakkında SSS Için Azure önbelleği.
Yüksek CPU kullanımı veya sunucu yükü
Yüksek sunucu yükü veya CPU kullanımı, sunucunun istekleri zamanında işleyemediği anlamına gelir. Sunucunun yanıt vermesi yavaş olabilir ve istek hızlarıyla devam edemeyebilir.
CPU veya sunucu yükü gibi ölçümleri izleyin . CPU kullanımında, zaman aşımları ile karşılık gelen ani artışlar izleyin.
Yüksek sunucu yükünü azaltmak için yapabileceğiniz birkaç değişiklik vardır:
- Yüksek bellek baskısı nedeniyle, aşağıda belirtilen uzun süre çalışan komutlar veya sayfa hatalı gibi CPU artışlarına neden olduğunu araştırın.
- Olası etkilerden önce uyarılmak için CPU veya sunucu yükü gibi ölçümler üzerinde uyarılar oluşturun .
- Birden fazla redin işlemi arasında yük dağıtmak veya daha fazla CPU çekirdeği ile daha büyük bir önbellek boyutuna kadar ölçeklendirmek için daha fazla parçaya ölçeklendirin . Daha fazla bilgi için bkz. redin planlama hakkında SSS Için Azure önbelleği.
Uzun süre çalışan komutlar
Bazı Redis komutlarının yürütülmesi diğerlerinden daha uzun sürer. Redsıs komutları belgeleri , her komutun zaman karmaşıklığını gösterir. Redis komutu işlemesi tek iş parçacıklı olduğundan, çalıştırılması zaman alan bir komut onu izleyen tüm diğer komutları engeller. Performans etkilerini anlamak için, Redsıs sunucunuza dağıttığınız komutları gözden geçirin. Örneğin, anahtarlar komutu genellikle bir O (N) işlemi olduğunu bilmeksizin kullanılır. CPU artışlarını azaltmak için tarama kullanarak anahtarlardan kaçınabilirsiniz.
Yavaşgünlük al komutunu kullanarak, sunucuda yürütülen pahalı komutları ölçebilirsiniz.
Sunucu tarafı bant genişliği sınırlaması
Farklı önbellek boyutlarının farklı ağ bant genişliği kapasiteleri vardır. Sunucu kullanılabilir bant genişliğini aşıyorsa veriler istemciye hızla gönderilmez. Sunucu istemciye verileri yeterince hızlı bir şekilde gönderemediğinden, istemci istekleri zaman aşımına uğrar.
"Önbellek okuma" ve "önbellek yazma" ölçümleri, sunucu tarafı bant genişliğinin ne kadar kullanıldığını görmek için kullanılabilir. Bu ölçümleri portalda görüntüleyebilirsiniz .
Ağ bant genişliği kullanımının en yüksek kapasiteye yakın olduğu durumları azaltmak için:
- Ağ talebini azaltmak için istemci çağrısı davranışını değiştirin.
- Olası etkileri hakkında önceden bilgi sahibi olmak için bellek okuma veya bellek yazma gibi ölçümlerle ilgili uyarılar oluşturun.
- Daha fazla ağ bant genişliği kapasitesine sahip daha büyük bir önbellek boyutuna ölçeklendirin . Daha fazla bilgi için bkz. redin planlama hakkında SSS Için Azure önbelleği.