3. Parti Yazılımlar

Web Sitesi Yük Test Aracı Locust – Web Site Load Test LOCUST

Eğer sizde benim gibi özel olarak yapılandırdığınız Web Hizmetlerinizi barındıran Web Sunucularınızı optimize edip servis sürekliliği açısında ne kadar kaynaklı kaç sunucu oluşturmak istediğinizi ölçmek istiyorsanız birazdan anlatacağım konu tam size göre.

 

Web Sunucularınızın çalıştırdığınız web hizmetine göre performans testini ölçebileceğiniz ücretsiz, Open Source ve başarılı yazılımlara baktığımızda ilk karşımıza gelenler; Grinder, jMeter ve Locust alternatifleriniz arasında olacaktır. jMeter ve Grinder, Java GUI tabanlı yazılımlar olmasından dolayı test yapılan cihazın kaynaklarını daha çok kullanmakta. Fakat Locust komut tabanlı olmasından dolayı daha az kaynak kullanarak daha başarılı sonuçlar vermektedir.

 

Bu makalemizde sizlere web sitelerinizin performans testini ücretsiz ve Open Source bir araç olan Locust ile nasıl yapacağınızı anlatacağım. Hem Windows hem de Linux üzerinde çalıştırabileceğiniz Locust diğer performans test yazılımlarına göre client (testi başlattığınız cihaz) üzerinde en düşük yük oluşturma özelliğinden ötürü yoğun talep görmektedir.

 

Bu makalemiz 3 ana bölüm ve 4 alt bölümden oluşmaktadır. Şimdi sırası ile önce gereksinimleri, kurulumu ve kullanımına geçelim.

 

1- Gereksinimler: Python Kurulumu

 

Locust temelde Python ile çalışmaktadır. Bu nedenle kurulum ve yapılandırmaya geçmeden önce Aşağıdaki linkten 3.6 sürümünün en güncel Python’u indirip kurulumunu gerçekleştirmeniz gerekiyor.

 

https://www.python.org/downloads

 

Genellikle en çok sorulan soru “Locust’u Windows’a mı çalıştırmalıyız yoksa Linux üzerinde mi?”. Benim yaptığım testlerde Linux makine üzerinde daha fazla sanal kullanıcı açabildim. Bu nedenle önerim birden fazla Linux cihaz üzerinden testi başlatmanızdır. Eğer Linux bilginiz az ise önce Windows üzerinde kurup test ayarlarınızı oluşturup locustfile.py dosyasını temel kurulumları yaptığınız Linux makine üzerinde çalıştırmanızdır.

 

Windows Üzerinde Python Kurulumu:

 

Windows cihazlara Python kurulumu için gelişmiş seçeneğini işaretleyerek ilerleyiniz.

 

clip_image002

 

Gelişmiş seçeneğini seçtiğinizde tüm ek bileşenleri işaretleyiniz. “pip” bileşeni Locust kurulumunda kullacağız.“.py launcher” ise Locust’u çalışmasını sağlayan bileşendir.

 

clip_image004

 

Standart kurulumdan farklı olarak “Advanced Options” sekmesindeki tüm alanları işaretleyiniz. Bu sizin Locust’u çalıştırırken ihtiyacınız olacaktır.

 

clip_image006

 

Windows makineye kurulum yaparken kurulum yapılan bilgisayara eğer başkaları da bağlanıp Python’u çalıştıracaksa ProgramFiles altına kurulumu yapmanız. Değil ise AppData\Local\Programs\Python\Python36-32 yer alıyor. Bu sayede sizin hesabın dışındakilerinde kullanımına açmış olursunuz.

 

İşletim sistemleri bazı güvenlik ve performans değerlerinden ötürü aynı anda belli sayıda dosya açmaya izin vermektedir. Fakat Locust çalışma sistematiği olarak aynı anda sizin test yapmak istediğiniz sanal kullanıcı sayısı kadar dosya açalarak test yapmakta. Bu davranıştan ötürü “Python error IOError: [Errno 24]” hata mesajı alınabilir. Bu sorunun çözümü için Python kurulumunun son adımında “Disable path length limit” butonuna basarak kurulumu tamamlamanız.  

 

clip_image008

 

Centos Linux Üzerinde Python Kurulumu:

Eğer Centos Linux repo’da Python3.6 güncel sürüm yoksa aşağıdaki komutları çalıştırınız.

sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm

sudo yum update

sudo yum install yum-utils

sudo yum groupinstall -y “Development Tools”

sudo yum install -y python36u python36u-libs python36u-devel python36u-pip

python get-pip.py

Linux üzerinde ise Python kurulum dizininde (/usr/lib64/Python3.6 ) aşağıdaki komutu ile dosya açma limitini 12000 çıkartırsınız.

ulimit -n 12000

 

Locust Kurulumu:

Python kurulumu tamamlandıktan sonra kurulum dizininde komut satırından gidip aşağıdaki komutları çalıştırınız.

python -m pip install –upgrade pip

pip install locustio

pip install pyzmq

 

Kurulum için Firewall İzni:

Kurulum yapılabilmesi için Kurulum yapılacak cihazın https://files.pythonhosted.org

Web adresine 443 TCP portundan internet erişiminin olması gerekmektedir.

 

Locust’un Yapılandırılması:

Locust’un çalışabilmesi için locustfile.py isimli yapılandırma dosyasının kurulum yapılan Python klasörü içinde bulunuyor ve düzenlenmiş olması gerekiyor.

 

Eğer Windows’a standart kurulum yapıldı ise “C:\Program Files (x86)\Python36-32\Scripts” altında Linux’de ise /usr/lib64/Python3.6 klasörü altına locustfile.py ismi ile dosya oluşturun.

Temel olarak Web Sitesi testi için locustfile.py isimli dosyayı her hangi bir text editörü ile açıp aşağıdaki verileri giriniz.

 

from locust import HttpLocust, TaskSet, task

class UserBehavior(TaskSet):

@task

            def get_something(self):

                        self.client.get(“/sitecontrol.html”)

class WebsiteUser(HttpLocust):

            task_set = UserBehavior

 

Web Sitesi Testine Başlama:

Yapılandırdığınız ayarlarla Locust servisinin başlaması için aşağıdaki komutu çalıştırınız.

locust –host=http://test_yapacağınız_web_sitesi_adresini_giriniz

Teste başlamak için kurulumu ve yapılandırmayı yaptığınız sunucu üzerinde  http://localhost:8089/  adresine giriniz. Başka makineden girecekseniz localhost yerine sunucu ip adresini giriniz.

 

clip_image010

 

Locust Yönetim sayfasına girdiğinizde sizi ilk karşılayan testi kaç kullanıcı ile yapmak istediğinizi bildiriyor. Aşağıda verdiğim tanımlara göre uygun değerleri girip “Start Swarming” dediğinizde testiniz başlıyor.

 

Number of user to simulate: Testi toplam kaç sanal kullanıcı oluşturularak test yapılacağı

Hatch Rate: kaç saniyede bir ne kadar kullanıcı eklemek istersiniz

Test sonuçlarını ve anlık değerleri bu sayfa üzerinden görüntüleyebilirsiniz.

 

clip_image012

 

Locust Çoklu Çalışma Desteği:

Aslına baktığınızda tüm Load Test yazılımlarındaki temel kısıt client yani testi başlattığınız cihazın kaynak durumudur. Locust diğer Web Site Load Test yazılımlarından farklı olarak master – slave çalıştırmaya müsait. Tek bir makine, ihtiyacınız olan kullanıcı sayısını simüle etmek için yeterli olmadığında Locust, birden fazla makineye testi dağıtarak yük testi oluşturmayı destekliyor.

 

Bunun için en az 1 ana makine (master) ve istediğiniz kadar ek cihaz (slave) üzerinden aşağıdaki komutları kullanarak Locust servisini başlatmanız gerekiyor.

 

Locust Master Servis Kodu :

locust –host=http://test_yapilacak_web_sitesi –master

Locust Slave Servis Kodu :

locust –host=http:// test_yapilacak_web_sitesi –slave –master-host=master_ip_adresi

 

Kaynak:

https://docs.locust.io/en/stable/quickstart.html

https://docs.locust.io/en/stable/writing-a-locustfile.html

https://www.promptworks.com/blog/load-testing-with-locust

http://powerupcloud.azurewebsites.net/2016/02/18/running-loadtests-an-introduction-to-locust/

https://gist.github.com/agconti/0f3886cbf1ce158e913e

https://github.com/aws-samples/eb-locustio-sample/blob/master/locustfile.py

https://gist.github.com/kbeswick/10405384

 

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu