Redis büyük bir veri kümesi yüklerken bazı Linux sistemleri çok yavaşlar


14

Bir Redis kullanıcısından bir rapor aldım ve Linux ve programlayıcı alanında uzman olmadığım için ne cevap vereceğinden emin değilim, ancak (Redis projesi olarak) bu tür sorunları özellikle çözmemiz gerekiyor Gelecekte Redis Kümesi ile aynı anda tek bir kutuda çalışan birçok Redis örneğine sahip olacağız. Bu yüzden burada yardım istiyorum.

Sorun:

  • Çekirdek: "Linux redis1 2.6.32-305-ec2 # 9-Ubuntu SMP Per 15 Nis 08:05:38 UTC 2010 x86_64 GNU / Linux"
  • bol miktarda boş RAM, başka bir işlem önemli G / Ç yapmaz.
  • Önemli , bir EC2 büyük örneğinde çalışıyor, gerçek bir sunucu değil. Sanallaştırılmamış bir ortamda böyle bir şey görmedim. EC2 örneği: "Yüksek Bellek Ekstra Büyük Örnek 17.1 GB bellek, 6.5 ECU (her biri 3.25 EC2 İşlem Birimi ile 2 sanal çekirdek), 420 GB yerel yönetim ortamı depolama, 64 bit platform" .

Temel olarak büyük bir Redis örneğini yeniden başlattığınızda, sistem o kadar yavaşlar ve artık kabuğa yazamazsınız. Redis bir örneği yüklediğinde% 100 CPU kullanır (verileri olabildiğince hızlı yükler) ve dump.rdb dosyasını sırayla okur. I / O, yükleme CPU'ya bağlı olduğundan, I / O'ya bağlı olmadığından özellikle yüksek değildir.

Neden iki CPU ve bol RAM içeren bir kutu, diskte takas edilen şey yok, bu iş yüküyle çalışmayı bırakmalı?

Bunun bir EC2 örneği olmasıyla çok ilgili olduğu izlenimini edindim, kullanılan sanallaştırma teknolojisi ile ilgili, her zaman Redis 24 GB veri kümelerini sorunsuz bir şekilde (Redis'in diğer örneklerinde bile) yüksek yük ile çalışıyor).

Herhangi bir ipucu için teşekkürler!

Salvatore

Düzenleme : Twitter'dan aldığım bazı geri bildirimleri ekleme:

@ezmobius: @antirez yapılacak ilk şey / mnt veya yerel geçici sürücüler denemek olduğunu onun EBS lapa lapa olup olmadığını görmek için, 2. onun "ilk yazma cezası" (google) ve o zaman önce disk boyunca dd 0'ları gerekir.

from @dvirsky: @antirez Tam olarak böyle ec2 düğümlerinde birçok redis örneği çalıştırıyorum. BGSA'da biraz yavaşlama olduğunu fark ettim ama bu fenomeni değil.

Yanıtlar:


4

'Üstten' çıktı bazı ipuçları verebilir. Sol üstte '% çalıntı' etiketli, aynı fiziksel kutudaki diğer konuklara yönlendirilen donanım CPU'sunun miktarını yansıtan bir alan var. Hipervizör başka bir konuğa daha fazla CPU ayırmaya karar verdiğinde, özellikle uzun süredir yoğun CPU gerektiren bir görev yaparken bu tür yavaşlamalarla karşılaştım.

Sorunun bu olup olmadığından emin değilim ama kontrol etmeye değer.


Teşekkür ederim Kevin, bu çok ilginç ve bundan tamamen habersizdim.
antirez

2

EC2 örneğinde de aynı sorunu yaşadım. Muhtemelen Redis ile ilgili değildir - yüksek bir IO olduğunda (örneğin redis bir döküm dosyası yüklerken) ortaya çıkar.

Amazon forumlarında şu konuya bir göz atın: https://forums.aws.amazon.com/thread.jspa?messageID=215406

Farklı çekirdekler / görüntülerle denedim ve şimdi iyi çalışıyor (eski bir 2.6.21 çekirdeğinde).


Teşekkürler mhdk, tahminim bunun sanallaştırma + Linux zamanlayıcı ile ilgili olmasıdır. Yavaş disk I / OI bile, diski kullanmıyorlarsa ve değiştirilmiş sayfaları yoksa diğer işlemlerin neden engelleneceğini hiçbir şekilde göremiyorlar. Farklı çekirdekler / zamanlayıcı yapılandırmaları denemek muhtemelen denemeye değer.
antirez

2

% 100 yükü ve donmuş kabuğu deneyimlediğinizde gösterilen CPU çalmasını ( xx.x%stcpu hattının sağ tarafında) kontrol etmelisiniz top. Steal, gerçek CPU döngülerinizin ne kadarının bir hipervizör tarafından makinenizden çalındığını ve başka bir makineye verildiğini gösterir. CPU çalma yalnızca sanallaştırılmış ortamlarda geçerlidir. Mikro örneklerle ilgili tam bir sorunum vardı ve CPU yoğun görevler yapıyorsanız, temelde örneğimi yaklaşık 1 saat boyunca (görevim bitene kadar) kullanılamaz hale getirdi.

Bu konuyla ilgili daha fazla bilgiyi Greg's Ramblings'deki bu yazıyı okuyarak bulabilirsiniz . Greg'in sözünü alırsanız, bu sadece mikro örneklerde oluyor olmalı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.