Bir Apache sunucusunun performansını izleyin

izlemek istediğinizde apache sunucusu, bazı yönleri bilmeliyiz:

  • Kaç istek taşıyabilir
  • İsteklere yanıt verme hızı
  • bekleme süresi nedir
  • Hangi uygulamalar veya hizmetler geliştirilebilir veya optimize edilebilir?
Bir sunucunun performansını ölçmek için Apache Benchmark veya ApacheBench adlı bir araç kullanacağız.

ApacheBenchApacheBench özellikle web sunucularının ve http servisinin performansını ölçmek için komut satırında çalışan bilgisayar yazılımıdır. Bu yazılım Apache HTTP sunucusunu test etmek için geliştirilmiştir, ancak http hizmetlerini test etmek için bir araç olarak, herhangi bir web sunucusunu test etmek için kullanmak mümkündür. Nginx, Lighttpd.

Alet ApacheBench Linux depolarında ve Apache sunucusunda bir kitaplık olarak bulunur ve bu nedenle ücretsiz, açık kaynaklı bir yazılımdır ve Apache lisansını kullanır.

Bu tür bir testin Apache Bench ab komutunu kullanarak hızlı bir şekilde yapılması çok kolaydır.

Bu test, Apache kurulumunda acil bir sorun olup olmadığını bize hızlı bir şekilde gösterecek ve bu nedenle kötü yanıt veriyor.

Ayrıca aşağıdaki soruda bize yardımcı olur Apache, PHP ve MySQL ile sunucuyu ve web kaynaklarını ne kadar kullanabilir veya zorlayabilirim? (eşzamanlı bağlantılar ve yükleme isteği sayfası ile), artı bir sonuç elde etmek için Apache ve PHP yapılandırmasında optimize etmemiz gerekenler daha iyi performans ve ziyaretçi taleplerine cevap verme problemlerini ortadan kaldırır.

1. ApacheBench'i Linux sunucularına yükleme


Ubuntu / Debian
 sudo apt-get install -y apache2 sudo apt-get install apache2-utils

Redhat / Centos

 yum httpd araçlarını yükleyin

Farklı domainler ve ip ile testler yapacağız. Bir terminal penceresi açarak başlayacağız ve aşağıdaki testleri gerçekleştireceğiz:

Yerel sunucu veya localhost ayrıca ip 127.0.0.1

 ab 127.0.0.1/
yerel ana bilgisayar

2. Sorguları


Parametreli bir sorguya bakalım. google.com'a aynı anda 30'ar kişilik gruplar halinde 100 istek gönderiyoruz ve elde edilen verileri bir csv dosyasına kaydediyoruz, kod aşağıdaki gibidir:
 ab -g data.csv -n 100 -c 30 google.com/

Sonucu analiz ediyoruz

 Sunucu Yazılımı: GFE / 2.0 // İşletim sitesi Linux tabanlı Google web sunucusu Sunucu Ana Bilgisayar Adı: google.com Sunucu Bağlantı Noktası: 80 Belge Yolu: / Belge Uzunluğu: 262 bayt Eşzamanlılık Düzeyi: 30 Testler için geçen süre: 1.370 saniye Tam istekler: 100 Başarısız istekler: 0 2xx olmayan yanıtlar: 100 Toplam aktarılan: 53100 bayt Aktarılan HTML: 26200 bayt Saniyedeki istek sayısı: 73.01 [# / sn] (ortalama) // istek başına ortalama istek başına süre: 410.899 [ms] (ortalama) / / istek başına ortalama İstek başına süre: 13.697 [ms] (ortalama, tüm eşzamanlı istekler arasında) // toplam başına ortalama Aktarım hızı: 37.86 [Kbayt / sn] alınan Bağlantı Süreleri (ms) // Bağlantı, işlem ve bekleme süreleri min ortalama [+/- sd] medyan max Bağlantı: 42 81 53.0 73 446 İşleme: 48 190 265.7 88 1286 Bekleme: 46 114 148,2 86 1246 Toplam: 114 270 274.7 150 1369 Belirli bir süre (ms) içinde sunulan isteklerin yüzdesi %50 150 %66 203 %75 222 %80 243 %90 844 %95 953 %98 1088 %99 1369 %100 1369 (en uzun istek)

Ortalama istek başına 410.899 milisaniye ve 37.86 Kbyte/sn aktarım hızı ile saniyede 73 isteğe cevap verdiğini görüyoruz, ayrıca bağlantı, işlem ve bekleme süresinin nasıl değiştiğini görüyoruz.

CSV veri dosyası aşağıdaki yapıya sahip olacaktır.

CSV yapısı

 (başlangıç ​​zamanı) 24 Mart Salı 11:53:03 2015 - (saniye) 1427208783 - (ctime) 46 - (dtime) 68 - (ttime) 114 - (bekle) 66 (başlangıç ​​zamanı) 24 Mart Salı 11:53:03 2015 - (saniye) 1427208783 - (ctime) 46 - (dtime) 74 - (ttime) 120 - (bekle) 72 (başlangıç ​​zamanı) 24 Mart Salı 11:53:03 2015 - (saniye) 1427208783 - (ctime) 64 - (dtime) 56 - (ttime) 120 - (bekle) 56

Bir metin düzenleyicili terminalden sonra, aynı etki alanının birden çok URL'sini değerlendirmek için bir metin dosyası oluşturacağız. Alet ApacheBench aşağıdaki gibi 20 bine kadar URL'yi destekler.

Dosya aşağıdaki yapıya sahip olacaktır:

 http://example.com/index.html/ http://example.com/news.html/ http://subdomain.example.com/
Her seferinde bir isteği test ediyoruz:
 ab -g data.csv -n 1000 urls.txt
Bu durumda, ApacheBench adreslerini toplamak urls.txt ve sunucuya istek gönderin. URL'lerin alan adı, tüm URL'ler için aynı olmalıdır.

10 eşzamanlı kullanıcının her birinin web sitesini 10 ziyaret ettiği durum
10 farklı eşzamanlı ve yinelenen kullanıcı tarafından yüklenen yaklaşık 100 sayfadır, her kullanıcı her istekte sırayla gösterilen veya yüklenen 10 sayfa yapar.

Test ediyoruz:

 ab -l -r -n 100 -c -k 10 http://www.eexample.com/clients/
Bu, sunucu tarafından desteklenmesi ve yanıtlanması gereken ayda yaklaşık 100.000 ziyaret alan bir web sitesindeki maksimum yükü temsil eder.

50 eşzamanlı kullanıcının aynı web sayfasını 20 kez ziyaret ettiği durumSunucunun 1000 sayfaya yani 50 kullanıcıya aynı anda 20 istekte yanıt vermesiyle ilgili, her kullanıcı sırayla sayfalara 20 sorgu yapıyor:

 ab -l -r -n 1000 -c -k50 http://www.eexample.com/chat/
Bu, facebook gibi bir sohbet veya yorum sistemi gibi çok sayıda istek göndererek kullanıcıların veya ziyaretçilerin çok yorum yaptığı bir blogu veya sistemi test etmek için kullanılabilir.

Bu tür bir test, çok aktif bir web sitesinin veya blogun trafiğine eşdeğer olabilir.

Hızlı PHP ve MySQL testiHerhangi bir mysql veritabanı oluşturuyoruz veya test edecek bir veritabanımız varsa onu kullanıyoruz, sonra absql.php adlı php betiğini oluşturuyoruz.

 AB Testi Php ve MySQL 
Komut dosyasına ve dolayısıyla MySQL'e 10.000 istek gönderiyoruz.
 ab -n 1000 -c 5 http://190.165.210.108/absql.php

ile her testin sonuçlarını analiz edin. ApacheBench. En önemli veriler, sunucudan gelen istekler ve yanıtlar hakkında bize bilgi sağlayan verilerdir:

ApacheBench sonuçlarını analiz edin1. Sunucu görüntüleyerek saniyede kaç istek sunabilir? Diğer göstergeler, bu bağlamda gerçek bir şeyi temsil etmedikleri için pek kullanışlı değildir.

2. Apache web sayfasında veya yapılandırmasında herhangi bir hata var mı? Sunucunun yanıt vermesi veya çökmesi zaman aldığında, bellek sorunları mı yoksa yüksek kaynak tüketimi mi olduğunu analiz etmeliyiz.

3. Apache sunucusu hangi eşzamanlılık düzeyinde yavaşlamaya veya çökmeye başlayacak ve bekleme süresi ne kadar olacak? Bu düşük bir eşzamanlılık düzeyinde oluyorsa, bir şeyler yanlıştır, bunun ne olduğunu ve çalışması için neyin gerekli olduğunu bilmeliyiz, belki daha fazla sunucu kaynağı.

3. Apache'de performansı artırmak için dikkate alınması gereken faktörler


Apache performansı1. Mod_cache modülü Apache'den istek/sonuç önbellek sayfasına. Bu, birleştirilen diğer tüm yöntemlere göre 5-10 kat performans artışı sağlayacaktır.

2. php_memcache PHP betikleri ve sorguları için veri önbelleğini yönetir. Bu, web sayfalarında %50 - %100 performans artışı sağlayabilir.

3. Önbellek eklentileri Joomla, WordPress, PrestaShop ve bazı Çerçeveler veya CMS için.

4. Mod_expires modülü Apache, ziyaretçinin önbelleğini kullanmak ve sayfaları belirli bir süre tutmak için, o sayfalara tekrar istekte bulunmak ve yeniden yüklemek zorunda kalmak yerine, web her dakika içeriğini değiştirmezse çalışır.

Apache performansını büyük ölçüde etkileyen bir diğer husus ise, PHP ve MySQL, dosya yapılandırmasını optimize ederek MySQL performansını artırma benim.ini xampp, wampp veya lampp'den yararlanın ve php kullanan ve MySQL'den içerik üreten web'e yönelik sorguları veya istekleri optimize edin, sorunun ne olduğunu görmek ve performansı artırmak için MySQL yavaş sorgu günlüğünün kullanımını optimize etmeye çalışın.

Nasıl kullanılacağı hakkında daha fazla bilgi istiyorsanız AppacheBench.

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.
wave wave wave wave wave