Kişisel kullanıcılar veya kurumlar firmalar son zamanlarda hazır hosting kullanmak yerine kendilerine ait yonetilebilir sunucuları tercih etmekteler. Yonetilecek olan sunucuların ihtiyaca gore butceleri şekillenmekte. Kimi kurumsal firmalar yuksek ucretler ayırırken kimi kişisel kullanıcılarda cok duşuk ucretler ayırmakta. Bu durumda her iki tercih icinde kaliteli performans alma gerekliliği ortaya cıkıyor.Bu durumlar tam performans alma konusunda hazırladığım yazıya gecelim;

Apache Uzerinde Yuk Testi ve Performans Yukseltme Oncelikle Apache uzerine performans testini yapmak uzere farklı bir sunucu uzerine Apache ’nin kendi sunduğu ab (Apache Benchmark) yazılımını kuralım.
Ubuntu ve Debian alt yapısında, Apache2 web sunucusu yazılımınız kuruluysa yanına ‘apache2-utils‘ eklenti paketini kurmanız gerekmekte kurulumunu bilmeyenler icin root kullanıcısı uzerinde calışanlar bunu yazmalı
apt-get install apache2-utils
Yine bu sistemler uzerinde root haklarına sahip kullanıcı uzerinde kurulum yapacaksanız bunu yazmalısınız.
sudo apt-get install apache2-utils
RHEL, Centos ve Fedora alt yapısında, yum install -y httpd-tools
yazarak kurulumu gercekleştirebilirisiniz.

Kurulumlar tamamlandıktan sonra isterseniz detaylı kullanımı icin man ab yine isterseniz basit kullanımları icin ab yazarak kullanım bilgilerine erişebilirsiniz. Sizler icin resim olarak basit kullanımları ekledim.

Performans testi yapmadan once test yapacağımız sunucuda ki herhangi bir sitenin farklı lokasyonlar uzerinden testini Host-Tracker uzerinden yapalım.

Testi başlattıktan sonucumuzu bir kenara alalım.

Değerleri belli olan web sitemizin şimdi performans testine bakalım. Teste başlamadan once yazacağımız komutların parametre olarak ne anlama geldiğini belirteyim;
-c 100 -> komutu 100 farklı kullanıcının aynı anda girdiğini duşunebilirsiniz. bu değeri sunucu kapasitesine gore test ederek yazabilirsiniz. Orneğin 512mb ram, 1 cekirdek işlemciye sahip Digitalocean sanal sunucusu uzerinde maksimum 1000 calışabiliyor. -n 30000 -> komutu toplamda 30.000 paket yollansın anlamına gelmekte. 30.000 test icin orta seviyeli paket sayısıdır. Test erken biterse Ctrl+c ile durdurmak uzere paket limitini 1.000.000 ’a cıkartabilirsiniz. Testi başlatacağımız sunucu uzerinden şu komutu verip kimine gore saldırı kimisine gorede performans testini başlatalım.
ab -c 1000 -n 30000 http://web.siteniz/

Test başlar başlamaz tekrar web sitemizin uptime değerlerini tekrar yeni test başlatıp bakalım.

Bu uptime sitesi cevap suresine bakıyor. Ama normal olarak siteye erişmeye calıştığımızda en azından 0.5mbit Akk ’ye girmiş ADSL alt yapısıyla vmware sanallaştırmasını kullandığım sanal sunucu da hic bir optimizasyon yapılmamış web sunucuna verdiğimiz yavaşlatma ortada.
Programın mantığını anlatıp Apache kullanıcıları icin optimize etmede kullanılabilecek yontemleri Centos 7 / RHEL ve Fedora icin dosyası ile;
/etc/httpd/conf/httpd.conf
Debian ve Ubuntu tabanında;
/etc/apache2/apache2.conf
dosyası uzerinden duzenleyerek optimizasyona başlayalım. MaxKeepAliveRequests değerini 0 yani limitsiz olan değerden onerilen değer olan 250-750 arası değer (tercihinize gore) yazabilirsiniz. Ornek olarak 500 yazıyor ve kaydediyoruz. KeepAlive sunucunun, sunucu başına birden fazla istekte bulunmasına izin verip vermediğini ayarlar. Herhangi bir istemcinin sunucu kaynaklarını cok fazla tuketmesini onlemek icin kullanılabilir.
MaxKeepAliveRequests 500
Bu şekilde boş-cop paketler icin limit koymuş olduk. Bunun ardından Kaynak Kullanım ve Konfigurasyon ayarlarını yapalım. Bunu anlık kullanıcı gereği duymadan yapmanız optimizasyonu sağlayacak ve gelecek saldırıları buyuk olcude azaltacaktır. Yine httpd.conf dosyasını duzenleyelim.
Apache MPM (Multi-Processing Module) [Coklu-İşleme Modulu] guncel Apache uzerinde kurulu geldiğinden sadece ayarlarını yapmamız gerekiyor. Ayarlara gecelim.

StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 3000

StartServers: Bu yonerge, başlangıcta yaratılan alt sunucu işlemlerinin sayısını belirler. Yuksek yuklu bir sunucuda bu numarayı artırmanızın iyi bir fikir olduğundan, sunucu cok sayıda bağlantıyı kullanmaya hazırdır. Duşuk yuklu sunucuda 3-5 idealdir.
MinSpareServers: Bu yonerge, minimum boş sunucu servisi sayısını belirler. Bu değer, yuksek yuklu sunucular icin ayarlanmalıdır. Unutmayın, cok fazla boşta kalan işlemler sunucu uzerinde olumsuz bir etki yaratacaktır.
MaxSpareServers: Bu yonergeyle, azalan alt sunucu işlemi sayısını belirler. MaxSpareServers tarafından tanımlandıklarından daha fazla boşta olan alt sunucu işlemi olduğunda boşta olan surec oldurulur. MinSpareServers ’in 2 kat değeri gayet idealdir.
MaxClients: Bu yonerge, Apache ’nin işleyebileceği eşzamanlı isteklerin sayısını belirler. Bu sınıra ulaşıldığında, diğer bağlantı denemeleri sıraya alınır. Boylece saldırı durumlarında Apache ye yonelik saldırganların devre dışı bırakmalarının onune gecmişte oluyoruz.
MaxClients sayısı = (Toplam RAM bellek – Apache işlemi haric diğer işlemler icin kullanılan RAM bellek) / (Tek bir Apache işlemi tarafından kullanılan bellek)
MaxRequestsPerChild: Bu yonerge, bir alt işlemin sonlanmadan once ne kadar istekte calışacağını belirler. Limit ulaşıldığında, eş zamanlı işlem durdurulacak.
Not: Bu değer 0 ise, işlem asla durdurulmayacaktır.

İşlemleri tamamladıktan sonra Apache ’yi yeniden başlatalım. Centos 7 icin;
service httpd restart
Şimdi ise mod_pagespeed eklentisini kuralım. Yuk durumunda kullanıcılar yavaşlıkla karşılaşmasın. Anlatımlarımı 64 bit ’e gore anlatacağım. 32 bit kullanıcıları Buradan 32 bit linklerine ulaşabilir sonraki adımlar 32 bit ’e gore tamamlayabilir.
Centos, Fedora ve RHEL kullanıcıları bu komutları;
cd /tmp
rpm -Uvh https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm
Ubuntu/Debian kullanıcıları
cd /tmp
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
dpkg -i mod-pagespeed-stable_current_amd64.deb
yazarak mod_pagespeed eklentisi kurmuş olduk. Otomatik olarak Apache ayarlarına eklendi ve hazır. phpinfo() ya bakarak eklentiyi gorebilirsiniz. Bilmeyenler ise yeni bir php dosyası oluşturup şunları yazabilir.


Ve Apache Benchmark yazılımı calıştırıp anlık site ulaşılabilirlik raporuna tekrar bakınız