Merhaba, Bu yazımızda Centos 6.x  ile Plesk 11.5 Kontrol Paneli  yüklü bir sunucuda Apache ve Nginx web servislerini optimize etmeyi öğreneceğiz. Bir süredir yaygın olarak kullanılmaya başlayan Reverse Proxy özelliği sayesinde statik yükün büyük bir kısmını Nginx üstlenirken Apache ise sadece php süreçlerini işliyor. Bu sayede iki web server bir arada işbirliği yaparak daha iyi bir performans sergiliyebiliyorlar. Tabii ki bu sistemin bir takım kusurları yok değil. Uzun süren php süreçleri ile çok fazla bağlantı sayısı ile başa çıkmak için aşağıdaki yönergeleri izlemenizi tavsiye ederiz.

ilk olarak /etc/httpd/conf.d/fcgid.conf dosyasını yedekleyin ve aynı isimde boş bir dosya yaratıp aşağıdaki parametreleri ekleyin

LoadModule fcgid_module modules/mod_fcgid.so

<IfModule mod_fcgid.c>

<IfModule !mod_fastcgi.c>
AddHandler fcgid-script fcg fcgi fpl
</IfModule>

FcgidIPCDir /var/run/mod_fcgid/sock
FcgidProcessTableFile /var/run/mod_fcgid/fcgid_shm

FcgidInitialEnv RAILS_ENV production

FcgidIdleTimeout 3600
FcgidIdleScanInterval 480
FcgidBusyTimeout 1800
FcgidBusyScanInterval 480
FcgidZombieScanInterval 12
FcgidErrorScanInterval 12
FcgidProcessLifeTime 0

# Change the rate at which new FastCGI processes are spawned under load. Higher=faster
FcgidSpawnScoreUpLimit 10

# Higher number = spawning more FastCGI processes decreases the spawn rate (controls runaway
FcgidSpawnScore 1

# Higher number = terminating FastCGI processes decreases the spawn rate (controls runaway)
FcgidTerminationScore 2

# Increase the FastCGI max request length for large file uploads (needed for some sites)
FcgidMaxRequestLen 1073741824

FcgidMaxRequestsPerProcess 100000
#FcgidMinProcessesPerClass 3
FcgidMaxProcessesPerClass 4
FcgidMaxProcesses 16
FcgidIOTimeout 1800

</IfModule>

Sonraki adımda /etc/httpd/conf.d/performans.conf isminde bir dosya oluşturun. Bu dosyaya aşağıdaki parametreleri girin.

HostnameLookups off
KeepAlive Off
StartServers 1
ServerLimit 2
MinSpareThreads 32
MaxSpareThreads 96
ThreadLimit 64
ThreadsPerChild 32
ThreadStackSize 2097152
MaxClients 64
MaxRequestsPerChild 0

3.cü adımda ise SSH konsolu üzerinden aşağıdaki komutları sırasıyla uygulayıp mevcut CPU Core adedine uygun olarak Apache üzerindeki MaxClient ve ServerLimit paramtrelerini otomatik düzenleyin.

num_cpus=$(awk '/^processor/{count++}END{print count}' /proc/cpuinfo)
sed -i 's%[#]*HTTPD=.*%HTTPD=/usr/sbin/httpd.worker%g' /etc/sysconfig/httpd
sed -i 's%HTTPD_BIN\s.*%HTTPD_BIN /usr/sbin/httpd.worker%g' /etc/psa/psa.conf
sed -i "s/\(ServerLimit\s*\).*/$(( $num_cpus * 2 ))/" /etc/httpd/conf.d/performans.conf
sed -i "s/\(MaxClients\s*\).*/$(( ( $num_cpus * 2 ) * 32 ))/" /etc/httpd/conf.d/performans.conf
service psa stopall
service psa restart

Hepsi bu kadar. Umarım bu makalemiz size yardımcı olmuştur.