giriiş
Genellikle ab olarak kısaltılan Apache Bench, Apache HTTP Sunucusu projesi tarafından sağlanan tek iş parçacıklı bir komut satırı aracıdır. Apache Hipermetin Aktarım Protokolü (HTTP) sunucunuzda kıyaslama testleri gerçekleştirmek üzere tasarlanmıştır. Apache Bench, sunucuya gelen birden fazla isteği simüle ederek sunucunuzun yükü ne kadar iyi kaldırabildiğini ölçer. Bu, stres testi veya yük testi olarak bilinir. Web siteniz için bir yangın tatbikatı gibidir ve sunucunuzun gerçek trafik geldiğinde saldırıyı karşılayabileceğinden emin olur.
Karşılaştırmanın önemi
Hız göstergesi, devir saati veya yakıt göstergesi olmayan bir araba kullandığınızı düşünün. Ne kadar hızlı gittiğinizi, motorun ne kadar zorlandığını ve ne kadar yakıtınız kaldığını bilemezdiniz. Web sitenizi kıyaslamak, bu aracı kullanmaya benzer. Size önemli performans değerleri sağlar. Şunları anlamanıza yardımcı olur:
- Kapasite: Kullanıcı deneyimi bozulmadan önce sitenizin kaldırabileceği ziyaretçi sayısı.
- Kararlılık: Sisteminizin değişen trafik seviyeleri, özellikle de ani ve beklenmedik artışlar altında nasıl performans gösterdiği.
- Darboğazlar: Sisteminizin hangi kısmı (örneğin veritabanı, sunucu yazılımı, ağ) performansı sınırlıyor?.
Düzenli kıyaslama yapmak sadece rakamları takip etmekle ilgili değildir. Web sitenizin en zorlu koşullar altında bile erişilebilir, güvenilir ve hızlı kalmasını sağlamakla ilgilidir. Bunu yaparak, yalnızca mevcut kullanıcılarınızı memnun etmekle kalmaz, aynı zamanda kullanıcı tabanınız büyüdükçe güvenle ölçeklenirsiniz.
Adım 1 – Apache Bench'i yükleyin
Karşılaştırma testine başlamadan önce, Apache Bench'in (ab) sisteminizde yüklü olduğundan emin olmamız gerekiyor. Apache Bench genellikle Apache HTTP sunucusuyla birlikte gelir, ancak web sunucunuz olarak Apache kullanmıyorsanız ayrı olarak da kurulabilir. Apache Bench'i farklı işletim sistemlerine nasıl kuracağınız aşağıda açıklanmıştır:
- Debian tabanlı dağıtımlar (Ubuntu, Debian) Apache Bench, apache2-utils paketinin bir parçasıdır. Yüklemek için terminalinizi açın ve aşağıdaki komutu çalıştırın:
sudo apt-get update sudo apt-get install apache2-utils- Red Hat tabanlı dağıtımlar (Fedora, CentOS) Red Hat tabanlı sistemlerde, Apache Bench'i aşağıdaki gibi kurmak için yum veya dnf'yi (Fedora'da) kullanabilirsiniz:
sudo yum install httpd-tools- یا اگر از dnf استفاده می کنید:
sudo dnf install httpd-tools- Arch Linux kullanıcıları için Apache Bench, pacman kullanılarak kurulabilir:
sudo pacman -S apache-tools- Apache Bench, birçok macOS sistemine önceden yüklenmiş olarak gelir. Yüklü olup olmadığını kontrol etmek için terminalinizi açın ve ab yazın. Yüklüyse, komutun kullanımı hakkında bilgi göreceksiniz. Yüklü değilse veya en son sürüme güncellemek istiyorsanız, Homebrew kullanarak yükleyebilirsiniz:
brew install homebrew/apache/abAdım 2 – Test ortamının kurulması
Web sunucunuzu Apache Bench ile kıyaslamaya başlamadan önce, kontrollü bir test ortamı oluşturmanız çok önemlidir. Bu, test sonuçlarınızın mümkün olduğunca doğru ve tutarlı olmasını sağlar.
- Bir test sunucusu seçimi
Yalıtım: Gerçek kullanıcılarla etkileşimi önlemek ve tutarlı sonuçlar elde etmek için üretim trafiğinden izole edilmiş bir sunucu ortamı seçin.
Tekrarlama: Test sunucusunun donanım, yazılım ve ağ yapılandırması açısından üretim ortamını mümkün olduğunca yakından yansıttığından emin olun.
- Ağ hususları
Bant Genişliği: Ağınızda yeterli bant genişliğinin olduğundan emin olun. Ağ tıkanıklığı sonuçları etkileyebilir.
Gecikme: Test istemcisi (Apache Bench'in çalıştığı yer) ile test sunucusu arasındaki gecikmeyi göz önünde bulundurun. Yüksek gecikme, bağlantı süresinin doğruluğunu etkileyebilir.
- Kaynak izleme
Sunucu kaynakları: Test sırasında olası darboğazları belirlemek için sunucu kaynaklarının (CPU, bellek, disk G/Ç, ağ G/Ç) izlenmesini ayarlayın.
Temel Performans: Sunucunun yük olmadan temel performansını kaydedin. Bu, kıyaslama sonuçlarınız için bir karşılaştırma noktası sağlar.
Adım 3 – Ölçüt hedeflerini belirleyin
Net hedefler, kıyaslama sürecinizi yönlendirmenize ve sonuçları etkili bir şekilde yorumlamanıza yardımcı olur. Örneğin:
- Maksimum Eş Zamanlı Kullanıcı: Sunucunuzun performansını önemli ölçüde düşürmeden aynı anda sahip olabileceği maksimum kullanıcı sayısını ayarlayın.
- Tepki süresi: Web uygulamanız için farklı yükleme koşulları altında kabul edilebilir bir tepki süresi belirleyin.
- Verim: Sunucunuzun desteklemesi gereken verime (saniye başına istek) karar verin.
- Yoğun trafik: Web sunucunuzun yüksek yükleri kaldırabileceğinden emin olmak için yoğun trafik senaryolarını test etmeyi planlayın.
4. Adım – Kıyaslama kriterlerini anlayın
Apache Bench, web sunucunuzun performansını ölçen kıyaslamalar sunar. Karşılaşacağınız bazı temel ölçümlerin bir özeti aşağıdadır:
- Verim: Sunucunuzun saniyede işleyebildiği istek sayısı. Daha yüksek değerler, daha iyi performans ve sunucunun daha fazla trafiği işleyebilme yeteneğini gösterir.
- İstek başına süre: Tek bir isteğin işlenmesi için geçen ortalama süre. Daha düşük değerler, daha hızlı yanıt sürelerini ve daha duyarlı bir sunucuyu gösterir.
- Eşzamanlı İstekler: Sunucuya aynı anda gönderilen istek sayısı. Bu ölçüm, sunucunun eş zamanlı yük altında ne kadar iyi performans gösterdiğini anlamanıza yardımcı olur.
- Aktarım hızı: Test sırasında saniyede aktarılan veri miktarı. Sunucunun içerik iletme kapasitesini gösterir. Bant genişliği yoğun uygulamalar için çok önemlidir.
- Başarı/Hata Oranı: Başarılı taleplerin hatalı yanıtlara oranı (örneğin, 404, 500). Yüksek bir başarı oranı, kullanıcı memnuniyeti ve güvenilirlik açısından kritik öneme sahiptir.
Bu ölçümleri anlamak, Apache Bench sonuçlarını yorumlamanıza ve sunucunuzun belirlediğiniz performans hedeflerine ulaşıp ulaşmadığını belirlemenize yardımcı olacaktır. Bu ölçümlerin birlikte değerlendirilmesi gerektiğini unutmayın; çünkü hepsi birlikte sunucunuzun performansının bir profilini sunar.
Adım 5 – Basit bir test çalıştırın
Başlamak için bir terminal penceresi açın. Karşılaştırma yapmak istediğiniz URL'yi seçin. Bu sayfa tipik bir kullanım örneği olmalıdır. Bu örnekte http://example.com adresini kullanacağız. Basit bir karşılaştırma testi çalıştırmak için aşağıdaki komutu girin:
ab -n 100 -c 10 http://example.com/این دستور 100 درخواست را به http://example.com با همزمانی 10 درخواست در یک زمان ارسال می کند. پس از اجرای دستور، Apache Bench تست را اجرا می کند و پس از اتمام یک سری خروجی ارائه می دهد. بسته به تعداد درخواست ها و زمان پاسخگویی سرور، ممکن است چند ثانیه تا چند دقیقه طول بکشد.
مرحله 6 – تجزیه و تحلیل خروجی
پس از پایان تست، Apache Bench نتایج را نمایش می دهد. در اینجا یک نمونه از خروجی کوتاه شده است:
Document Path: /
Document Length: 108 bytes
Concurrency Level: 10
Time taken for tests: 12.905 seconds
Complete requests: 100
Failed requests: 0
Non-2xx responses: 100
Total transferred: 29500 bytes
HTML transferred: 10800 bytes
Requests per second: 7.75 [#/sec] (mean)
Time per request: 1290.527 [ms] (mean)
Time per request: 129.053 [ms] (mean, across all concurrent requests)
Transfer rate: 2.23 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 645 757 109.5 740 1401
Processing: 173 219 205.1 200 2246
Waiting: 172 218 205.1 196 2246
Total: 834 976 227.1 929 2939
Percentage of the requests served within a certain time (ms)
50% 929
66% 973
75% 988
80% 988
90% 1022
95% 1069
98% 1622
99% 2939
100% 2939 (longest request)خروجی Apache Bench چندین معیار کلیدی را ارائه می دهد که به درک عملکرد وب سایت تحت آزمایش کمک می کند.
مرحله 7 – استفاده پیشرفته و بهترین روش ها
تست همزمان
تست همزمان برای درک اینکه چگونه وب سرور شما تحت فشار عمل می کند ضروری است، و شبیه سازی چندین کاربر که به طور همزمان به وب سایت شما دسترسی دارند.
دستور: -c در Apache Bench برای تنظیم سطح همزمانی استفاده می شود. که اینگونه به نظر می رسد:
ab -c <number_of_concurrent_users> http://example.com/
ab -c 100 http://example.com/
نظارت بر منابع سرور: در حین انجام آزمایش، منابع سرور را با استفاده از ابزارهایی مانند top در لینوکس نظارت کنید تا اطمینان حاصل کنید که سرور بیش از حد مالیات دریافت نمی کند.
تست طولانی مدت
آزمایش طولانی مدت شامل اجرای معیار در یک دوره طولانی برای شناسایی نشت حافظه بالقوه یا کاهش عملکرد در طول زمان است.
دستور: از -t برای اجرای تست برای تعداد مشخصی از ثانیه استفاده کنید. این تست را به مدت 10 دقیقه اجرا می کند، به عنوان مثال:
ab -t 600 http://example.com/Örnek: Gerçek dünya senaryosunu simüle etmek için eşzamanlılıkla birleştirme:
ab -c 100 -t 600 http://example.com/Farklı HTTP yöntemleriyle test etme
HTTP yöntemlerine giriş
- GET: Bu, sunucudan veri almak için kullanılan varsayılan yöntemdir.
- POST: Verilerin işlenmek üzere belirtilen bir kaynağa gönderilmesi için kullanılır.
POST yöntemiyle nasıl test yapılır
- Gönderime yönelik verileri hazırlayın: Gönderilecek verileri içeren bir dosya oluşturun.
- Komut: Veri dosyanızı belirtmek için -p'yi, içerik türünü ayarlamak için -T bayrağını kullanın.
Örnek:
ab -p postdata.txt -T application/x-www-form-urlencodedAdım 8 – Sonuca göre hareket edin
Apache Bench'i çalıştırdıktan sonra, aşağıdakileri arayarak darboğazları belirleyebilirsiniz:
- Her istek için yüksek değerler: Bu, yavaş işleme veya sunucu kaynak kısıtlamalarına işaret edebilir.
- Saniye başına düşük istek sayısı: Bu, sunucunuzun yüksek trafik yüklerini etkili bir şekilde idare edecek şekilde optimize edilmediğini gösterebilir.
- Belirli zamanlarda karşılanan isteklerin yüzdesinde geniş dağılım: Çok sayıda isteğin karşılanması önemli ölçüde daha uzun sürüyorsa, bu tutarsız sunucu performansının göstergesi olabilir.
Böylece sunucu performansını artırmaya karar verebilirsiniz. Örneğin:
- Sunucu Yapılandırması: Performansa göre ayarları düzenleyin. Örneğin, KeepAlive veya MaxClients gibi ayarları değiştirmeniz gerekebilir.
- Ölçekleme: Sunucu donanımınızın yoğun yükünüzü karşılayıp karşılayamayacağını veya ölçeklendirmeniz gerekip gerekmediğini belirleyin.
- Optimizasyon: Optimizasyona ihtiyaç duyan yavaş performans gösteren betikleri veya veritabanı sorgularını belirleyin.
Sonuç
Bu eğitimde, Apache Bench'i nasıl kuracağınızı, temel ve gelişmiş kıyaslama testlerini nasıl çalıştıracağınızı, sonuçları nasıl yorumlayacağınızı ve sunucu performansınızı optimize etmek için bilinçli kararlar almayı öğrendiniz. Kıyaslama, yinelemeli bir süreçtir. Web sitenizin performansını sürekli olarak izlemeye ve farklı yapılandırmaları test etmeye kendinizi teşvik edin. Becerilerinizi geliştirmek ve web sitenizin sorunsuz çalışmasını sağlamak için yeni optimizasyon teknikleri ve araçları hakkında bilgi sahibi olun. Unutmayın, iyi performans gösteren bir web sitesi daha iyi bir kullanıcı deneyimi sağlar ve bu da kullanıcı memnuniyetini ve kullanıcı sadakatini artırabilir. Web sitenizin performansının sınırlarını zorlamaya devam edin.









