Lamp Wordpress Yük Testi¶
Bu test Kali linux üzerinde Jmeter aracılığıyla Ubuntu 18.04 LTS üzerine yapılmıştır
Ne Yapacağız?¶
- Kali linux makinesine jmeter kuracağız
- Ubuntu 18.04 makinesinde lamp wordpress kuracağız
- Son olarak jmeter ile lamp wordpress üzerinde yük testi yapacağız
- Bu sayede ilgili CPU ve Ram miktarlarının ne kadar ziyaretçi alabildiğini göreceğiz
Gereklilikler¶
- WMvare İndirin ve kurun
- Kali linux Kurun
- Ubuntu 18.04 LTS Kurun
Lamp Wordpress Kurulumu¶
- mysql indiriliyor
apt install mysql-server mysql-client
- Wordpress indiriliyor
wget http://www.wordpress.org/latest.tar.gz
- phpmyadmin indiriliyor
apt-get install phpmyadmin
- Burada direk enter'e basın
- Aynı şekilde burada da enter'e basın
- Bu ekranda şifre belirlemeniz gerekiyor
- Şifrenizi tekrar girin
- Wordpress'i arşiv dosyasından çıkaralım
tar xzf latest.tar.gz
- Wordpress dosyasının taşınması ve gerekli izinlerin verilmesi
rm -r /var/www/html && mv wordpress html && mv html /var/www && chown -R www-data.www-data /var/www/html/ && chmod -R 777 /var/www/html
- /etc/apache2/apache2.conf dosyasını nano editörü ile açın
nano /etc/apache2/apache2.conf
- Aşağıdakini dosyanın en alt kısmına ekleyin
Include /etc/phpmyadmin/apache.conf
- ve aşağıdaki adımlarla dosyayı kaydedip çıkın
Ctrl+x > y > Enter
- MySQL servisine root olarak girelim
- şifre olarak az önce girdiğiniz şeyi girin
mysql -u root -p
- Wordpress için bir veritabanı oluşturalım
create database wpdb;
- Wordpress için bir kullanıcı oluşturup şifresini belirleyelim
create user [email protected] identified by '[email protected]#';
- Kullanıcıya veritabanı üzerinde tüm yetkileri verelim
grant all on wpdb.* to [email protected];
- Değişiklikleri kalıcı hale getirelim
flush privileges;
- Çıkış yapalım
quit
- Servisi yeniden başlatalım
/etc/init.d/apache2 restart
- Aşağıdaki komutla IP adresinizi sorgulayın
ifconfig
- tarayıcınıza girip IP adresinizi yazın
- aşağıdaki benim IP adresim
192.168.127.154
- Aşağıdaki ekranla karşılaşacaksınız ve Türkçe dilini seçip devam edin
- Bu ekranda direk başlıyalım butonuna tıklayın
- Bu ekranda demin mysql de oluşturduğumuz veritabanı adı, kullanıcısı ve şifresini girelim
- Kurulumu çalıştır butonuna tıklayın
- Burada sitenizin bilgileri yer alıyor giriş bilgilerini az sonra kullanacağız
- Kurulum tamam giriş butonuna tıklayın
- Giriş ekranından az önce oluşturduğunuz bilgilerle giriş yapın
- Sol üst taraftan siteyi görüntüle diyerek siteyi görebilirsiniz
- Lamp wordpress kurulumu başarılı
Jmeter kurulumu¶
- Jmeter indirelim
wget https://ftp.itu.edu.tr/Mirror/Apache//jmeter/binaries/apache-jmeter-5.3.tgz
- Jmeteri tgz dosyasından çıkaralım
tar -zxvf apache-jmeter-5.3.tgz
- Jmeter'i çalıştıralım
cd apache-jmeter-5.3/bin && ./jmeter
- Jmeter çalışıyor
Jmeter yapılandırılması¶
- Aşağıdaki gifi dikkatlice izleyin ve adımları uygulayın
- Sol taraftaki yere tıklarsanız içindekiler açılır
- Number of Threads (users) Buradaki sayı kullanıcı sayısıdır
- Ramp-up period (seconds) Buradaki süre ise oluşturduğumuz kullanıcı sayısının kaç saniyede girmesini istediğimizdir
- Bu örnekte 5 kullanıcı 5 saniyede siteye girsin diyoruz. Yani saniye başına 1 kişi
- HTTP olanların hepsini sağ tıklayıp remove(silin) yapın.
- Kırmızı alan daki hepsinin ismini ayarladığım gibi ayarlayın bu sizin için daha az karmaşık olacaktır
- Üst kısımda kişi sayısını belirlemiştik.
- Burada test edilecek IP adresini veya domain adresini yazıyoruz 1 numara'da.
- 2 numara'da eğer başka bir sayfanız test edilecek ise oraya yazabilirsiniz (koraykutanoglu.com.tr/yük_araçları) Yük araçları sayfası gibi.
- Öncelikle 1 deki response code yi işaretleyin
- 2 numarada bendeki gibi 200 yazmıyacak "h1 domain h1" gibi birşey yazacak 2 numaradaki gibi orayı seçip 4 numaralı butona basarsanız silinir daha sonra 3 numaraya basıp orada bir alan oluşturun ve onun üzerine çift tıklayarak 200 yazın
- Burada da aynı şekilde test edilecek domain veya IP adresini girin
- Burada da aynı şekilde 404 olacak şekilde ayarlayın ek olarak equals ve not işaretli olmalıdır
- Eğer test edilen sayfada 404 durum kodlu bir içerik oluşursa bunu göreceğiz
Yük Testi¶
- Burada yapmanız gereken birşey yok üstteki başlat butonuna basıp sonuçları alt kısımda göreceksiniz
- Ek olarak izleme aracı olarak View results in table ekleyebiliriz burada biraz daha detay gösteriliyor
- Connect Time Bağlantı süresi (ms)
- Status Durum başarılı
- Değerleri artırıyorum ve 5 saniye içerisinde 30 kişinin girmesini istiyorum
- Gördüğünüz gibi bağlantı sürelerimiz uzamaya başladı
- Yani yük arttıkça makine yetersiz geliyor
Yük testinin grafiğinin çıkarılması¶
- Öncelikle kişi sayıları kısmını seçin
- İlgili kısmı seçtikten sonra file üzerinden save test plan as butonuna basın
- Karşınıza gelen ekranda dosyanın adını test.jmx yapıp bin klasörünün içine save butonu ile kaydedin
-
Jmeteri kapatın ve terminal ekranını açın (Ctrl + alt + y)
-
Öncelikle root olun
sudo -i
- apache-jmeter-5.3/bin dizinine gidin
cd apache-jmeter-5.3/bin
- Raporlar için bir klasör oluşturalım
mkdir results
- test.jmx az önce kaydettiğimiz dostadır
- result/sonuc.csv sonuç az önce oluşturduğumuz results altına oluşturulacak
- results Tüm sonuç dosyalarının yazdırılacağı dosya
- Bu komutun çıktısı uzun sürebilir çünkü testi tekrar gerçekleştiriyor
./jmeter -n -t test.jmx -l results/sonuc.csv -e -o results
- result dosyamıza gidiyoruz
cd results
- içindekileri görelim
ls
- GUI Arayüz kullanıyorsanız bir üst dizine gelip dosyaları tmp klasörüne kopyalayın
cd .. && cp results /tmp
- Dosya yöneticinize giriş yapın ve oradan tmp klasörünüze girin
- ardından results klasörüne girin
- Raporlarınıza ulaştınız
- Şimdi index.html dosyasını açalım
- Gördüğünüz gibi genel rapor karşımızda
- Bu raporların detayına sol taraftaki menüden ulaşabilirsiniz
Ubuntu 18.04 1 CPU 1 GB Ram MAX yük testi¶
- 50 kullanıcı anlık olarak sisteme 1 kere girer
- Program belirlenen 50 kullanıcıyı sisteme anında sokmaya çalışır ama elbetteki bu mümkün değildir anlık 50 kişi sokması için bile belirli bir zaman geçer o yüzden min bağlantı süresi ile max bağlantı süresi arasında fark vardır
Kişi sayısı | Süre Sayısı | Tekrar sayısı | Toplam istek sayısı | Min Bağlantı Süresi | Max Bağlantı Süresi |
---|---|---|---|---|---|
50 | 0 Saniye | 1 | 50 | 100MS | 1000MS |
70 | 0 Saniye | 1 | 70 | 270MS | 1601MS |
100 | 0 Saniye | 1 | 100 | 207MS | 2170MS |
200 | 0 Saniye | 1 | 200 | 218MS | 5181MS |
400 | 0 Saniye | 1 | 400 | 255MS | 11897MS |
800 | 0 Saniye | 1 | 800 | 1561MS | 49476MS |
1600 | 0 Saniye | 1 | 1600 | 1600MS | Çöktü |
50 | 20 Saniye | 1 | 50 | 22MS | 101MS |
70 | 20 Saniye | 1 | 70 | 20MS | 35MS |
100 | 20 Saniye | 1 | 100 | 20MS | 63MS |
200 | 20 Saniye | 1 | 200 | 20MS | 32MS |
400 | 20 Saniye | 1 | 400 | 21MS | 70MS |
800 | 20 Saniye | 1 | 800 | 19MS | 101MS |
1600 | 20 Saniye | 1 | 1600 | 52MS | 110187MS |
3200 | 20 Saniye | 1 | 3200 | 2344MS | Çöktü |
Cache eklentisi aktif edilir(WP Fastest Cache)¶
Kişi sayısı | Süre Sayısı | Tekrar sayısı | Toplam istek sayısı | Min Bağlantı Süresi | Max Bağlantı Süresi |
---|---|---|---|---|---|
3200 | 20 Saniye | 1 | 3200 | 4MS | 1325MS |
5000 | 20 Saniye | 1 | 5000 | 18MS | 34046MS |
9000 | 20 Saniye | 1 | 5000 | 480MS | 7000'den sonra çöktü |