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, maksimum kapasitesinin yakınında verilerle doldurulmuştur.
- Redsıs yüksek bellek parçalanması görüyor. Bu parçalanma çoğunlukla büyük nesneler depolanmasından kaynaklanır çünkü redin küçük nesneler için iyileştirildi.
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 .
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 ücretleri ile devam edemiyor.
CPU veya sunucu yükü gibi ölçümleri izleme. Cpu kullanımında zaman aşımına karşılık gelen ani artışları izleyin.
Yüksek sunucu yükünü azaltmak için birkaç değişiklik yapabilirsiniz:
- Aşağıda not alan uzun süre çalışan komutlar veya yüksek bellek baskısı nedeniyle sayfa hatası gibi ANI CPU artışlarına neyin neden olduğunu araştırın.
- Olası etkiler hakkında erken bilgi için CPU veya sunucu yükü gibi ölçümler hakkında uyarılar oluşturun.
- Daha fazla CPU kapasitesiyle daha büyük bir önbellek boyutuna ölçeklendirin.
Uzun süre çalışan komutlar
Bazı Redis komutlarını yürütmek diğerlerine göre daha pahalıdır. Redis komutları belgeleri, her komutun zaman karmaşıklığını gösterir. Redis komut işlemesi tek iş parçacıklı olduğundan, çalışması zaman alan bir komut, ondan sonra gelen diğer tüm komutu engelleyebilir. Performans etkilerini anlamak için Redis sunucunuza vermenizi gereken komutları gözden geçirmeniz gerekir. Örneğin, KEYS komutu genellikle bunun bir O(N) işlemi olduğunu bilmeden kullanılır. CPU ani artışlarını azaltmak için SCAN kullanarak ANAHTARLAR'ı önlersiniz.
SLOWLOG komutunu kullanarak sunucuya karşı yürütülen pahalı komutları ölçebilirsiniz.
Sunucu tarafı bant genişliği sınırlaması
Farklı önbellek boyutları farklı ağ bant genişliği kapasitelerine sahiptir. Sunucu kullanılabilir bant genişliğini aşarsa veriler istemciye bu kadar hızlı gönderilmez. Sunucu istemciye yeterince hızlı veri iteleyemey olduğundan, istemci istekleri zaman zaman uzamadı.
Sunucu tarafı bant genişliği miktarını görmek için "Önbellek Okuma" ve "Önbellek Yazma" ölçümleri kullanılabilir. Bu ölçümleri portalda görüntüebilirsiniz.
Ağ bant genişliği kullanımının maksimum kapasiteye yakın olduğu durumların hafifletilmesi için:
- Ağ talebini azaltmak için istemci çağrısı davranışını değiştirme.
- 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 .