Apache Bench Nedir?

Apanche Bench, Apache Hiper Metin Aktarım Protokolü (HTTP) sunucunuzun başarımını ölçmek amacıyla kullanabileceğiniz bir kıyaslama aracıdır. Mevcut Apache kurulumunuzun görevini nasıl yerine getirdiği hakkında bir izlenim edinmeniz için tasarlanmıştır. Özellikle, Apache kurulumunuzun saniyede kaç isteği sunma yeteneğinde olduğunu gösterir.

Biraz daha konuyu açarsak, geliştirdiğimiz web uygulamalarının veya API servislerinin performansları ölçmek için anlık olarak ne kadar yük kaldıracağı test etmektedir. Apache Bench yani ab her türlü Http Server için yük testi (load test) yapmak mümkündür. Bu kılavuzda ab kurulumu ve kullanımına bakacağız. 

Daha fazla bilgi için bakınız:

https://httpd.apache.org/docs/2.4/programs/ab.html

Ön Gereksinimler

  • Ubuntu 14x-22x
  • superuser

Windows üzerinde kullanmak için, https://www.apachelounge.com/download/ linki üzerinden sisteminize uygun olanı indirip kullanabilirsiniz.

syntax

ab [options] [http[s]://]hostname[:port]/path

ab kurulumu

Ubuntu Install

Apache Bench depoda bulunduğu için kolay bir şekilde kurulabilmektedir. İlk olarak paket listemizi güncelleyim.

sudo apt-get update

Akabinde ab'yi kullanmak için apache2 utils paketini yükleyelim.

sudo apt-get install apache2-utils -y 

Kurulumu doğrulayın.

ab -V 

ab kullanımı

Şimdi belirlediğiniz veya kendi web sitenizi ab kullanarak test edelim. Ab ile yük testlerimizi komut satırından uygulayıp görebiliyoruz. Şimdi kendi web sitemin adresine 1000 adet istek,  ve 10 concurrency  yani aynı anda 10 kullanıcı istek yapıyormuş gibi bir test gerçekleştirelim ve sonuçlara bakalım.

ab -k -n 1000 -c 10 http://your-domain.com/ 

Aktif olarak kullandığımız bazı opsiyonlara bakalım.

  • n Belirtilen adrese yapılacak olan toplam istek sayısını belirtir.
  • c Aynı anda yapılacak işlem sayısını ifade eder. Burada verdiğimiz 10 değeri herhangi bir t anında web adresine istek yapan kullanıcı sayısını belirtir. Stress testi yapmak isterseniz bu değer artırabilirsiniz.
  • -k KeepAlive Http Header‘ının kullanılmasını sağlar. Böylelikle ilk istekten sonra connection sürdürülür.
  • -H: Yapılan isteklere ekstradan Http Header eklemek için kullanılır. Bu özelliği token-based çalışan API metotlarının testi için kullanabilirsiniz.

Şimdi sonucu basit olarak yorumlarsak. Time taken for tests kısmına bakıldığında ,1000 istek(request) tamamlanması 16.696 saniye sürdü. Saniye de toplam  istek sayısına 59.89 (saniye) isteğe cevap verilebildi.

Aşağıda ab tarafından döndürülen değerler açıklanmıştır:

  • Server Software : İlk başarılı yanıtın, varsa, server HTTP başlığında döndürülen değer. Bu başlıktaki başlangıçtan 32 ondalık değerli karaktere (genellikle boşluk veya CR/LF karakteri) kadar tüm karakterleri içerir.
  • Server Hostname : Komut satırında belirtilen DNS veya IP adresi.
  • Server Port : ab' nin bağlandığı port. Komut satırında port belirtilmemişse, öntanımlı olarak http için 80, https için 443'tür.
  • SSL/TLS Protocol : İstemci le sunucu arasında uzlaşılmış protokol değerleri. Bu sadece SSL kullanılıyorsa çıktılanır.
  • Document Path : Komut satırı dizgesinden çözümlenen isteğin URI'si.
  • Document Length : Başarıyla döndürülen ilk belgenin bayt cinsinden uzunluğu. Eğer belge uzunluğu sınama sırasında değişirse yanıt bir hata içerecektir.
  • Concurrency Level : Sınama sırasında kullanılan eşzamanlı istemcilerin sayısı.
  • Time taken for tests : İlk soket bağlantısının alındığı andan son yanıtın alındığı ana kadar geçen süre.
  • Complete requests : Alınan başarılı yanıtların sayısı.
  • Failed requests : Başarısızlık olarak addedilen isteklerin sayısı. Sayı sıfırdan büyükse, diğer satırda, bağlanma, okuma, yanlış içerik uzunluğu, istisnalar gibi sebeplerle başarısız olmuş istekler gösterilir.
  • Write errors : Başarısız yazma hatalarının (kırık boru) sayısı.
  • Non-2xx responses : 200 serisi yanıt kodları ile açıklanamayan yanıtların sayısı. Tüm yanıtlar 200 olursa bu alan çıktılanmaz.
  • Keep-Alive requests : Keep-Alive isteklerinde sonuçlanan bağlantı sayısı.
  • Total body sent : Sınamanın parçası olarak veri gönderimi yapılandırılmışsa, bu sınama sırasında gönderilen toplam bayt sayısıdır. Sınama sırasında gövde gönderilmiyorsa bu alan çıktılanmaz.
  • Total transferred : Sunucudan alınan toplam bayt sayısı. Bu sayı aslında hattan gönderilen bayt sayısıdır.
  • HTML transferred : Sunucudan alınan belge baytlarının sayısı. Bu sayı HTTP başlıklarının bayt sayısını içermez.
  • Requests per second : Saniyedeki istek sayısı. İstek sayısının toplam süreye oranıdır.
  • Time per request : İstek başına harcanan süre. İlk değer eşzamanlılık  * süre * 1000 / biten formülüyle hesaplanırken ikincisi için süre * 1000 / biten formülü kullanılır.
  • Transfer rate : okunan toplam /1024 / süre formülüyle hesaplanan aktarım hızı.
Blog'a Dön