Kısa cevap: Siz hariç bu soruya kimse cevap veremez.
Uzun cevap, belirli iş yükünüzü kıyaslamanın kendinizin üstlenmeniz gereken bir şey olduğudur, çünkü "Bir ipin uzunluğu ne kadardır?"
Basit bir tek sayfalık statik web sitesi bir Pentium Pro 150'de barındırılabilir ve her gün binlerce gösterim yayınlanabilir.
Bu soruyu cevaplamak için atmanız gereken temel yaklaşım, denemek ve ne olduğunu görmek. Sisteminizi yapay olarak baskı altına sokmak için kullanabileceği çok sayıda araç var.
Buna kısa bir genel bakış:
- Senaryoyu yerine koy
- İzleme ekle
- Trafik ekle
- Sonuçları değerlendir
- Sonuçlara göre düzelt
- Durulayın, oldukça mutlu olana kadar tekrarlayın
Senaryoyu yerine koy
Temel olarak, bazı yükleri test etmek için, test etmek için bir şeye ihtiyacınız var. Test edilecek bir ortam kurun. Bu, eğer mümkünse üretim donanımınıza oldukça yakın bir tahminde bulunmalıdır, aksi takdirde verilerinizi ekstradan bırakacaksınız.
Sunucularınızı, hesaplarınızı, web sitelerinizi, bant genişliğinizi vb. Ayarlayın. Bunu VM'lerde yapsanız bile, sonuçlarınızı ölçeklendirmeye hazır olduğunuz sürece sorun yoktur.
Bu yüzden, orta güçte bir sanal makine (iki çekirdekli, 512 MB RAM, 4 GB HDD) kuracağım ve en sevdiğim yük dengeleyicimi VM'deki Red Hat Linux'unhaproxy
içine yükleyeceğim .
Ayrıca yük dengeleyicisini test etmek için kullanacağım yük dengeleyicisinin arkasında iki web sunucusu olacak. Bu iki web sunucusu, canlı sistemlerimle aynı şekilde kuruluyor.
İzleme ekle
İzlemek için bazı metriklere ihtiyacınız olacak, bu yüzden kullanıcılar iki saniyenin üzerinde bir yanıtlama süresi almaya başlamadan önce web sunucularına kaç isteğin geldiğini ve saniyede kaç isteği sıkabileceğimi ölçeceğim.
haproxy
Yük dengeleyicinin bağlantıları yapabildiğinden emin olmak için RAM, CPU ve disk kullanımını da izleyeceğim .
Bunun nasıl yapılacağı platformlarınıza çok bağlıdır ve bu cevabın kapsamı dışındadır. Web sunucusu günlük dosyalarını gözden geçirmeniz, performans sayaçlarını başlatmanız veya stres testi aracınızın raporlama yeteneğine güvenmeniz gerekebilir.
Her zaman izlemek istediğiniz birkaç şey:
- CPU kullanımı
- RAM kullanımı
- Disk kullanımı
- Disk gecikme
- Ağ kullanımı
Ayrıca, test ettiklerinize bağlı olarak SQL kilitlenmelerine bakmayı, zaman aramayı, vb. Bakmayı da seçebilirsiniz.
Trafik ekle
Burası işlerin eğlenceli geçtiği yer. Şimdi bir test yükünü simüle etmeniz gerekiyor. Orada araçlar bol ayarlanabilir seçenekleriyle, bunu yapabilirsiniz:
Bir numara, herhangi bir numara seçin. Diyelim ki sistemin dakikada 10.000 vuruşla nasıl yanıt verdiğini göreceksiniz. Hangi numarayı seçtiğiniz önemli değil, çünkü bu adımı birçok kez tekrarlayacaksınız, sistemin nasıl tepki verdiğini görmek için bu sayıyı yukarı veya aşağı ayarlayacaksınız.
İdeal olarak, bu 10.000 talebi birden fazla yük testi istemcisine / düğümüne dağıtmanız gerekir, böylece tek bir istemci istekleri tıkamaktadır. Örneğin, JMeter'in Uzaktan Testi , birkaç müşterinin kontrol eden bir Jmeter makinesinden başlatılacağı merkezi bir arayüz sağlar.
Sihirli Git düğmesine basın ve web sunucularınızın erimesini ve çökmesini izleyin.
Sonuçları değerlendir
Öyleyse, şimdi 2. adımda topladığınız ölçümlere geri dönmeniz gerekiyor. 10.000 eşzamanlı bağlantıyla, kutunuzun haproxy
çok az ter attığını görüyorsunuz , ancak iki web sunucusuyla yanıt süresinin beş saniyenin üzerinde bir dokunuş olduğunu görüyorsunuz . Bu hiç hoş değil - unutmayın, cevap süreniz iki saniye hedefliyor. Bu yüzden bazı değişiklikler yapmamız gerekiyor.
aga
Şimdi, web sitenizi ikiden fazla hızlandırmanız gerekir. Yani, ölçeklendirmeniz veya ölçeklendirmeniz gerektiğini biliyorsunuz.
Ölçeklendirmek için, daha büyük web sunucuları, daha fazla RAM, daha hızlı diskler edinin.
Ölçeklendirmek için daha fazla sunucu edinin.
Bu kararı vermek için 2. adımdaki metriklerinizi kullanın ve test edin. Örneğin, test sırasında disk gecikmesinin çok büyük olduğunu gördüyseniz, ölçeklendirmeniz ve daha hızlı sabit sürücüler edinmeniz gerektiğini biliyorsunuzdur.
İşlemcinin test sırasında% 100 oturduğunu gördüyseniz, belki de mevcut sunucular üzerindeki baskıyı azaltmak için ek web sunucuları eklemek için ölçeklendirmeniz gerekir.
Genel bir doğru ya da yanlış cevap yok, sadece sizin için doğru olanı var. Ölçeklendirmeyi deneyin ve bu işe yaramazsa, bunun yerine ölçeklendirin. Ya da değil, size ve kutunun dışında düşünmeye kalmış.
Diyelim ki ölçekleneceğiz. Bu yüzden iki web sunucumu (VM'ler) klonlamaya karar verdim ve şimdi dört web sunucum var.
Durulayın, tekrarlayın
Adım 3'ten tekrar başlayın. İşlerin beklediğiniz gibi gitmediğini fark ederseniz (örneğin, web sunucularını iki katına çıkardık, ancak yanıt süreleri hala iki saniyeden fazladır), sonra diğer tıkanıklıklara bakın. Örneğin, web sunucularını iki katına çıkardınız, ancak hala berbat bir veritabanı sunucunuz var. Veya daha fazla VM klonladınız, ancak aynı fiziksel ana bilgisayarda olduklarından, yalnızca sunucu kaynakları için daha yüksek bir çekişme elde ettiniz.
Sistemin diğer kısımlarını test etmek için bu prosedürü kullanabilirsiniz. Yük dengeleyicisini vurmak yerine, doğrudan bir web sunucusuna veya bir SQL kıyaslama aracı kullanarak SQL sunucusuna vurmayı deneyin .