Apache Benchmark + GNUPlot: Web sunucunuzun performansını ölçün ve grafiğini çizin

Kullanılıp kullanılmadığı önemli değil nginx, Apache, Lighttpd veya başka türlü, bir web sunucusuna sahip herhangi bir ağ yöneticisi, bir noktada web sunucusunun belirli sayıda sorguya ne kadar hızlı yanıt verdiğini bilmek isteyecektir.

Yönetilen-Hizmetler-Sunucu-Yönetimi-e1368625038693

Apache Kıyaslama + GNUPlot

Bu sefer adında bir araç kullanacağız Apache KarşılaştırmasıAdında 'apache' olmasına rağmen, sadece Apache performansını ölçmek için DEĞİL, Nginx ve diğerleri için de kullanılabilir. Aslında, performansını ölçmek için kullanacağım nginx.

Ayrıca kullanacağız GNUPlot, bu, birkaç çizgiyle aşağıdaki gibi grafikler oluşturmamıza yardımcı olacaktır:

Sonuçlar

Apache Benchmark ve GNUPlot'u Kurmak

Apache Benchmark, Apache paketini kurduktan sonra kullanabileceğimiz bir araçtır, GNUPlot aynı isimli paketi kurduktan sonra kullanılabilir olacaktır. E sonra ...

Debian, Ubuntu veya benzeri dağıtımlarda:

sudo apt-get install apache2 gnuplot

ArchLinux veya türevleri gibi dağıtımlarda:

sudo pacman -S apache gnuplot

Sadece Apache paketini kurmamız gerekiyor, onu başlatmamız ya da başka bir şey yapılandırmamız gerekmiyor, sadece kurmak yeterli olacaktır.

Apache Benchmark'ı kullanma

Yapacağımız şey, belirli bir siteye birkaç (100'den 20'ye) gruplar halinde belirli sayıda istek (20) göndermektir. Sonucu bir .csv dosyasına (sonuç.csv) kaydedeceğiz ve ardından GNUPloit ile işleyeceğiz, satır şöyle olacaktır:

ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/

Ölçülecek sitenin URL'sine final / girmek çok önemlidir.

Bu, ağımdaki bir siteyi test ettiğimde bana gösteren çıktı veya günlük:

Bu ApacheBench, Sürüm 2.3 <$ Revizyon: 1638069 $> Telif Hakkı 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Apache Software Foundation'a Lisanslıdır, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (sabırlı olun) ..... bitti

Sunucu Yazılımı: nginx Sunucu Ana Bilgisayar Adı: gutl.jovenclub.cu Sunucu Portu: 80

Belge Yolu: /
Belge Uzunluğu: 206 bayt Eş Zamanlılık Düzeyi: 20 Testler için geçen süre: 0.101 saniye Tamamlanan istekler: 100 Başarısız istek: 27 (Bağlan: 0, Alma: 0, Uzunluk: 27, İstisnalar: 0) 2xx olmayan yanıtlar: 73 Toplam aktarılan: 1310933 bayt aktarılan HTML: 1288952 bayt
Saniyedeki istek sayısı: 993.24 [# / sn] (ortalama)
İstek başına süre: 20.136 [ms] (ortalama) İstek başına süre: 1.007 [ms] (ortalama, tüm eşzamanlı isteklerde) Aktarım hızı: 12715.49 [Kbayt / sn] alındı ​​Bağlantı Süreleri (ms) minimum ortalama [+/- sd] medyan maks. Bağlan: 0 1 0.2 1 1 İşlem: 1 17 24.8 4 86 Bekleme: 1 15 21.5 4 76 Toplam: 1 18 24.8 5 87 Belirli bir süre içinde sunulan isteklerin yüzdesi (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87
% 100 87 (en uzun istek)

En önemli olduğunu düşündüğüm şeyi kırmızıyla işaretledim, ki bu aşağı yukarı:

  1. Test ettiğimiz sunucunun verileri ve söz konusu URL.
  2. Saniyedeki istek sayısı.
  3. Sunucunun, en uzun süren, yani yanıtlanması en uzun süren talebe katılması kaç milisaniye sürdü.

Bu bilgilerle sunucunun bu kadar isteklere katılmasının ne kadar süreceği hakkında bir fikir sahibi olabilirler, daha iyi bir önbellek sistemi ekleyebilirler, kullanmadıkları modülleri devre dışı bırakabilirler, vb, testi yeniden çalıştırabilir ve performansın iyileşip iyileşmediğini görebilirler. .

Üst üste iki testin sonuçları nadiren aynı olduğundan, marj gibi bir şey yaratmanız için testi 2 veya 3 kez çalıştırmanızı öneririm.

Diğer kullanışlı Apache Benchmark seçenekleri veya parametreleri:

-k -H 'Kabul Et-Kodlama: gzip, deflate' : Bu ab ile sunucunun yapılandırdığı önbellek ve sıkıştırmayı kabul edecek, böylece süreler daha düşük olacaktır.

-f urls.txt : Dolayısıyla sitenin dizinini test etmek yerine, o dosyada belirttiğimiz URL'ler üzerinde testler gerçekleştirecektir.

Neyse ... şuna bir bak adam ab görmen için.

Sonucu bir grafikte gösterin:

Bu çıktıyı bir imaja, yani daha görsel bir ortama ve çoğu zaman yöneticilerin anlamayı başardığı her şeyi koymak için ... bunun için daha önce de söylediğim gibi kullanacağız, GNUPlot

Results.csv dosyasının bulunduğu klasörde (hatırlayın, sadece yukarıdaki komutla oluşturduk) gnuplot.p adında bir dosya oluşturacağız:

nano plot.p

İçine aşağıdakileri koyacağız:

terminal png boyutu 600 set çıktı "results.png"başlığı ayarla"100 istekler, 20 eşzamanlı istekler "boyut oranı 0.6 ayarla ve xlabel ayarla"istek"ilabel ayarla"yanıt süresi (ms)"arsa"results.csv"satır başlıklı 9 yumuşak sbezier kullanma"gutl.jovenclub.cu"

Her zaman kontrol etmeniz gerekenleri kırmızıyla işaretledim. Yani yukarıdan aşağıya:

  1. Oluşturulacak görüntü dosyasının adı
  2. Toplam ve eşzamanlı istek sayısı.
  3. Az önce oluşturduğumuz dosyanın adı.
  4. Üzerinde çalıştığımız etki alanı.

Bunu yerleştirdikten sonra, kaydedin ve çıkın (Ctrl + O ve daha sonra Ctrl + X), aşağıdakileri gerçekleştireceğiz:

gnuplot plot.p

Ve işte, bu istenen isimle grafiği oluşturacak, benimki:

sonuçlar2

Son!

Apache Benchmark çok daha fazla seçeneğe sahiptir, ayrıca performans testimizi daha da eksiksiz hale getirmek için kullanabileceğimiz birçok kombinasyon vardır.

Ama hey, bu temeldi 😉

Keyfini çıkarın!


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Francisco dijo

    İlginç apache kıyaslaması, gnuplot hakkında bilmiyordum, çıktının tarzını değiştirmek mümkün mü? Resmi bir rapor için söylüyorum.

    Şili'den selamlar.

    1.    KZKG ^ Gaara dijo

      Evet, internette gnuplot için birçok yapılandırma var, onu kullanabileceğiniz kadar ciddi veya profesyonel bulup bulmadığınızı görmek için Google'da arama yapın, çünkü bu herkesin zevkine göre

  2.   Wolf119 dijo

    Ummm, 80 istekten çok hızlı bir şekilde tetiklendiği için, GUTL'ye göre bunun nasıl gittiğini görmek için şimdi çalıştırdığım sanal bir apache sunucusunda test edeceğim, değil mi? hiçbir şey, ancak 100 ila 10 ile 70 ila 80 arasında 80 istek daha veren yüksek dikkatimi çekiyor

    1.    KZKG ^ Gaara dijo

      Sıradan veya aynı anda katılacak maksimum iş parçacığı sayısından kaynaklanmalıdır. Ancak testi gzip olmadan, söndürmeden, önbellek veya herhangi bir şey olmadan yaptım 😉

  3.   Charlie kahverengi dijo

    Özellikle GNUPlot kullanımı için çok ilginç. Gördüğüm kadarıyla, hemen hemen her veri kümesinden grafikler oluşturmak için kullanılabilir, değil mi? ...

    1.    KZKG ^ Gaara dijo

      Evet, elbette, verileri virgülle ayrılmış bir dosyada veya buna benzer bir şeyde iletirsiniz, yapılandırma dosyasında nasıl işleneceğini anlatırsınız ve bu kadar

  4.   Adolfo dijo

    Merhaba, her zaman bu blogu okuyarak geçiriyorum ama hiçbir makaleye yorum yapmadım ve bu iyi bir fırsat gibi görünüyor.
    Sizinle paylaşmak istediğim şey, bu tür bir grafiğin yanlış yorumlanabileceğidir, çünkü Apache Bench sonucu sıralı zaman yerine ttime (toplam süre) kullanarak sıralar. Veriler hala doğru olsa da, grafik muhtemelen ne istediğimizi göstermiyor.
    İşte okuduğum bağlantı.
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    Selamlar.

  5.   Hugo dijo

    Apache Benchmark, birden çok çekirdekli bilgisayarlarda HTTP sunucularının performansını ölçmek için en iyi araç değildir, ayrıca 100 eşzamanlı bağlantıya sahip yalnızca 20 istek çok zayıf bir testtir, daha gerçekçi bir şey 1,000 eşzamanlı bağlantıyla 10,000 veya 100 istek olacaktır (bilinmektedir. Nginx'in saniyede 10,000'den fazla isteğe hizmet verebilen uygulamalardan biri olduğunu ve bunun için çok çekirdekli bilgisayarlar için tasarlanmış olan ve Apache Bench'in aksine daha hızlı epoll kullanan weighttp gibi bir araç kullanmak daha iyidir. tek bir iş parçacığı ve daha az verimli bir olay işleme mekanizması kullanır.

    Sunucunun yalnızca 4 çekirdeği olduğunu varsayarsak, amacıma ulaşmak için:

    ağırlıktp -n 10000 -c 100 -t 4 -k "http://our-web-site.com/"

  6.   inanç dijo

    Herkese Merhaba,
    Grafiği (CSV'den) gnuplot ile çizerken bana şu hatayı veriyor, nasıl çözeceğimi söyleyebilir misiniz?

    "Plot.p", satır 8: uyarı: Geçerli noktası olmayan veri dosyası atlanıyor

    "AB - localhost / web" başlıklı 9 yumuşak sbezier kullanarak "graph.csv" grafiğini çizin
    ^
    "Plot.p", satır 8: x aralığı geçersiz

    Gnuplot ile HTML sayfaları da oluşturabilir miyim?