SSD Önbellek Deposu ile Squid veya Diğer HTTP Önbellekleri?


9

SSD sürücülü bir sistemde kalamar (veya muhtemelen vernik) önbellek kurmayı düşünüyorum.

Bariz fayda, bu sistemlerin yüksek READ hızlarına sahip olması ve isabet oranımın oldukça yüksek olmasını bekliyorum.

Bir RAID yapılandırmasına 7 SSD yerleştirebileceğimi varsayalım. (çok daha fazlasını paketlememe izin verecek bazı durumlar var)

Uygulama soruları:

  • RAID0 kullanmalı mıyım? (Bir sürücünün nihayetinde başarısız olmasını bekliyorum, bu yüzden tehlikeli görünüyor.)

  • RAID10 kullanmalı mıyım? (Bu, disk ayak izimi yarıya indirir, bu da maliyetlidir.)

  • RAID5 kullanmalı mıyım? (SSD'lerin "kötü" yazma performansına ve yazma sınırlarına sahip olduğu bilinmektedir ve tüm fazlalık eşlik yazma işlemleri bunu önemli ölçüde yavaşlatabilir.)

  • Her diske kendi mürekkep balığı veri deposu gibi mi davranmalıyım? (kalamar birden fazla veri deposunu ne kadar iyi idare eder?

  • Veri depolarını yok saymalı ve SSD'leri büyük SWAP bölümlerine yerleştirmeli ve linux VM'nin bir şey yapmasına izin vermeli miyim? (özensiz görünüyor)

Üretim ortamlarında SSD kullanan kişilerden gelen herhangi bir tavsiye çok takdir edilecektir. (esp bunları HTTP önbellekleri için kullanıyorsanız)


İlginç bir soru için +1, hiç büyük bir takas bölümüne sürücüler yapmayı hiç düşünmedim
Bob

Evet, kesinlikle ilginç ... SSD bandwagonuna düşmemeye ve bu para için daha fazla RAM eklememeye meyilliyim.
Oskar Duveborn

Ne yazık ki, ihtiyacım olan önbellek kaplaması RAM'e sığmıyor. Bu nesneler için zaten RAM destekli kalamar önbelleklerim var.
Joel K

Yanıtlar:


8

Son 9 aydır SSD disklerde vernik kullanıyoruz, bizim için çok iyi çalıştı. Daha önce sadece sazan katmanı olan bir kalamar hafızası kullandık. İşe yaradı, ancak bellek parçalanması sık sık yeniden başlatma gerektiren gerçek bir sorundu. Squid 2.x ayrıca mevcut donanımda oldukça verimsiz hale getiren sadece bir çekirdek kullanacaktır.

Çok önbellek dostu olan sitemiz için 100Mbit / s trafik sunan 8 çekirdekli bir makinede yaklaşık% 10 cpu kullanımı görüyoruz. Testlerimizde, 2 1Gb bağlantı noktası ile cpu sınırlarına ulaşmadan önce bant genişliğimiz bitiyor.

SSD önbellek ile vernik çalıştırmak için bazı tavsiyelerim var.

  • Rastgele yazma performansı gerçekten önemlidir. Intel x-25m'ye geçmeden önce ssd sürücüler için birkaç satıcının denedik. 4k rastgele yazma için .1MB / s kadar küçük bir yazı gördük, x-25m ile 24MB / s 4k rastgele yazma elde ediyoruz.

  • RAID0. 2.0 önbellek kalıcı değildir, bu nedenle yedeklilik konusunda endişelenmenize gerek yoktur. Bu, yeniden başlatmaları incitir, ancak bunlar nadirdir. Yeni bir yapılandırma yüklemek ve nesneleri yeniden başlatmadan temizlemek gibi şeyler yapabilirsiniz.

  • mmap modu. Vernik önbellek bir dosyaya eşlenebilir veya takas alanı kullanılabilir. Takas kullanımı bizim için iyi sonuç vermedi, aynı miktarda trafiği sunmak için daha fazla g / Ç bant genişliği kullanma eğilimindedir. Linux swapin kodunda 4 sektörel bir başucu var, bunu kaldırmak için bir yama yazdık, ancak üretimde denemedik.

  • Son tarih zamanlayıcı. 2.6.28+ ile bu SSD farkında ve iyi performans. Noop'u denedik, ancak i / o bant genişliği sınırlı olduğundan son tarihin daha adil olduğunu gördük.

  • İleri okumayı devre dışı bırak. Dönme gecikmesi olmadığından, sadece ihtiyaç duyabileceğiniz için fazladan veri okumanın anlamı yoktur. i / o bant genişliği bu konularda değerlidir.

  • 2.6.28+ sürümünü çalıştırın. linux üzerinde çok fazla alan mmap bellek yöneticisine iyi bir antrenman verir, ancak bölünmüş lru yamalar çok yardımcı olur. kswapd cpu kullanımı güncellediğimizde çok düştü.

Vcl dosyamızın yanı sıra vernikle bağlantı metninde kullandığımız birkaç aracı da yayınladık . Vcl ayrıca maxmind veritabanına dayalı çok hızlı bir geoiplookup sunucusu uygulayan düzgün bir kesmek içerir.


1

SSD'leri HTTP önbellekleri olarak kullanmıyorum, ancak şu gözlemleri yapabilirim:

Tüm SSD'ler eşit değildir, bu yüzden iyi olanları seçerken çok dikkatli olmalısınız. FusionIO, PCIe destekli SSD'leri (nispeten düşük kapasiteye sahip) ancak yüksek maliyetli performans sergiliyor. Intel'in X25-E SLC SSD'leri gerçekten iyi performans gösterir ve daha ekonomiktir, ancak yine de düşük kapasitedir. Araştırmanı yap! Bunları üretim sistemlerinde kullandığım için X25-E SLC varyantlarını kesinlikle tavsiye ederim.

Orada size büyük bir ardışık okuma / yazma hızı verebilecek başka SSDS'ler var, ancak önbellek gibi bir şey için önemli olan şey rastgele IO'dur ve bir çok SSD, dönen disklerle yaklaşık olarak aynı rastgele performansı verecektir. SSD'ler üzerindeki yazma amplifikasyonu etkileri nedeniyle, dönen diskler genellikle daha iyi performans gösterir. Birçok SSD'nin kalitesiz denetleyicileri (örneğin, eski JMicron denetleyicileri) vardır; bu, bazı durumlarda önemli ölçüde bozulmuş performanstan muzdarip olabilir. Anandtech ve diğer siteler iometer gibi araçlarla iyi karşılaştırmalar yapar, orada kontrol edin.

Ve elbette, SSD'ler küçük. Gördüğüm en iyi SATA SSD olan Intel X25-E, sadece 32 ve 64 GB'lık varyantlarda geliyor.

RAID seviyeleri için standart RAID performans notları hala geçerlidir. Bir RAID 5'e yazma işlemi, değiştireceğiniz veri bloğunun okunmasını, eşlik bloğunun okunmasını, paritenin güncellenmesini, veri bloğunun yazılmasını ve eşlikin yazılmasını içerir, böylece diğer RAID'den daha kötü performans verecektir. SSD'lerde bile. Bununla birlikte, X25-E gibi sürücülerin bu kadar yüksek rastgele IO performansına sahip olmasıyla, bu muhtemelen daha az önemlidir - benzer boyutta bir dizi için dönen disklerde rastgele IO'dan daha iyi performans göstereceğinden.

Gördüğüm kadarıyla, RAID denetleyici bant genişliği, en azından sıralı performans söz konusu olduğunda, 7 diskli bir RAID setinden en fazla faydayı elde etmek için çok erken doymuş durumda. Mevcut SATA denetleyici modellerinden (3ware, areca vb.) Yaklaşık 800MB / s'den fazlasını alamazsınız. Birden fazla denetleyicide (örneğin, tek bir RAID10 yerine birkaç RAID1) daha küçük dizilere sahip olmak, her dizinin bağımsız performansının düşmesine rağmen, bunu geliştirecektir.

Bir HTTP önbelleği ile ilgili olarak, iyi bir dönen disk dizisi ve çok sayıda ram ile daha iyi hizmet edeceğinizi düşünüyorum. Sık erişilen nesneler, kalamarın dahili önbelleğinde veya işletim sisteminizin fs önbelleğinde bellek önbelleğinde kalır. Bir makineye daha fazla koç vermek, bu nedenle disk yükünü önemli ölçüde azaltabilir. Büyük bir kalamar önbelleği çalıştırıyorsanız, muhtemelen çok fazla disk alanı isteyeceksiniz ve yüksek performanslı SSD'ler hala sadece nispeten düşük kapasitede.


X25-M bile kullanılabilir
Pirolistik

Ödevimi yaptım ve JMicronlardan kaçınmayı biliyorum. Çoğunlukla X25-Ms (Intel MLC) ve muhtemelen daha yeni (JMicron olmayan) OCZ Vertex serilerini düşünüyordum.
Joel K

vay, ocz tepe noktası x25-m bile daha düşük maksimum rastgele yazma var !!!
Pyrolistical

1

SSD sürücülerine pek aşina değilim, ancak kullandığım bazı sorunların çözülmesine yardımcı olabilecek mimari hakkında konuşabilirim.

Kardeşler

Benim durumumda, her biri 16GB RAM ile dört sunucu oluşturdum. 9GB'ı Squid'in kullanması için bellek önbelleğinde olarak ayarladım. Onları kardeşler kümesi olarak yapılandırdım, böylece bir sunucuya bir sorgu veriyi aramadan önce diğerlerini sorgulayacaktır. Toplamda 36GB'lık bellek önbelleğim vardı. Aralarındaki iletişim çökmeye başladığı için dörtten fazla kardeşim olmazdı.

VIP'ler

İstemcinin konuşması için dört sunucu için bir VIP yapılandırdım. Bu, bir sunucu çöktüğünde ne olduğunu çözdü.

çocuklar

Web uygulamamı 127.0.0.1 üzerinde çalışan bir yerel Squid sunucusunu sorgulayacak şekilde ayarladım. Daha sonra bu Squid örneğinin üst öğesini VIP olarak yapılandırdı. Bu, tüm VIP'nin düşmesi durumunda çok hızlı bir yük devretmeye izin verir. Ebeveynler yanıt vermezse, çocuk hizmetleri doğrudan sorgular. Tek bir Squid sunucusu kullanıyorsanız ve VIP'niz yoksa da kullanışlıdır. Tabii ki web sunucunuzdaki yerel Squid örneği durursa her şey biler.

Kalamarın kendisi

Gerçekten 3.0'a bakmadım, ancak 2.x hala tek iş parçacıklı. Bir noktada CPU veya TCP arabellekleri bitecek. Mümkünse önbelleği 2-3 daha az kutuya yayarım. Ayrıca, sistemin büyümekte olduğunu görürseniz, gelecekte Kalamar çiftliklerinizi bölmek için planlar yapmak isteyebilirsiniz.

Her durumda SSD yapınızla iyi şanslar. Gelecekte muhtemelen bu rotaya gideceğim için nasıl ortaya çıktığını duymak isterim.


0

Neden baskın 10 veya 5'i bile düşünüyorsunuz. Burada performans istiyorsunuz. Sürücülerin sadece aşağı inip inmediği umurumda değil, çünkü bu sadece bir önbellek.

Baskın 0'ı kullanın veya ayrı tutun. Bir disk arızası tüm önbelleğinizi almaz çünkü ayrı ayrı daha iyi olacağını düşünüyorum.


Tek bir veri deposu düşerse Squid ne kadar iyi iyileşir? (Açıkçası bunu test etmem gerekiyor) Squid bir veri deposunun başarısız olması konusunda zarif değilse RAID5 bir uzlaşmadır.
Joel K

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.