Apache Performans Optimizasyonu

Apache Performans Optimizasyonu

Apache performans optimizasyonu işlemlerine başlamadan önce Apache web sunucusu nedir? öncelikle onu öğrenmenizi tavsiye ederim. Apache nedir başlıklı konumuzdan detaylı bilgi alabilirsiniz. Apache web sunucusu, dünya genelinde yaygın olarak kullanılan ve büyük projelerde bile tercih edilen bir sunucu yazılımıdır. Ancak, yüksek trafikli web sitelerinde, sunucunun performansını optimize etmek hayati önem taşır. Apache’nin varsayılan ayarları, genellikle düşük trafikli siteler için yeterli olsa da, yoğun talepleri karşılamak ve kullanıcı deneyimini iyileştirmek için belirli ayarlamaların yapılması gerekir. Apache performans optimizasyonu, bu bağlamda, sitenin hızlı ve verimli çalışması için gerekli olan düzenlemelerin yapılması sürecini ifade eder.

1. KeepAlive Özelliği Aktifleştirilmeli

Apache sunucusunda, KeepAlive özelliği varsayılan olarak kapalı olabilir. KeepAlive, aynı TCP bağlantısı üzerinden birden fazla isteğin işlenmesine olanak tanır. Bu, bağlantı kurma ve kapatma işlemleri sırasında zaman kaybını önler ve böylece sayfa yüklenme süreleri kısaltılmış olur. KeepAlive’nin aktifleştirilmesiyle, özellikle çok sayıda küçük dosya (örneğin resimler ve CSS dosyaları) içeren sayfalarda önemli performans iyileştirmeleri sağlanabilir.

2. MPM (Multi-Processing Module) Yapılandırması Yapılmalı

Apache, farklı iş yüklerine göre özelleştirilebilen birkaç MPM (Multi-Processing Module) ile birlikte gelir. Örneğin, prefork MPM, her bir istemciye ayrı bir işlem tahsis ederken, worker MPM, istemciler arasında iş parçacıkları kullanarak daha verimli bir işlem yapısı sunar. Yüksek trafikli web sitelerinde, worker MPM veya event MPM tercih edilmelidir. Bu yapılandırmalar sayesinde sunucu kaynakları daha verimli kullanılmış olur ve aynı anda daha fazla istemciye hizmet sunulabilir.

3. Cache Kullanımı Optimize Edilmeli

Apache performans optimizasyonunda önbellekleme (caching) kritik bir rol oynar. Cache, sık kullanılan verilerin sunucuda geçici olarak saklanmasını sağlar, bu da verilerin her seferinde yeniden işlenmesini önler. Apache’nin mod_cache ve mod_disk_cache modülleri etkinleştirilip yapılandırıldığında, sayfa yüklenme süreleri büyük ölçüde düşürülmüş olur. Ayrıca, tarayıcı önbellekleme direktifleri de eklenerek istemcilerin sıkça ziyaret ettiği sayfaların tekrar yüklenme süreleri azaltılmış olur.

4. Gzip Sıkıştırma Aktifleştirilmeli

Web sayfaları genellikle büyük miktarda veri içerir. Bu veriler, kullanıcıya iletilmeden önce sıkıştırıldığında, sayfa yüklenme süreleri ciddi şekilde düşer. Apache sunucusunda Gzip sıkıştırma modülünün etkinleştirilmesi, web sayfalarının boyutunu küçültür ve böylece veri aktarım süresi kısaltılmış olur. Gzip, özellikle geniş bant genişliğine sahip olmayan kullanıcılar için önemli bir performans iyileştirmesi sağlar.

5. Gereksiz Modüller Devre Dışı Bırakılmalı

Apache, varsayılan olarak birçok modülle birlikte gelir. Ancak, tüm bu modüllerin her zaman aktif olması gerekmez. Gereksiz modüllerin devre dışı bırakılması, sunucunun hafıza ve işlemci kaynaklarını daha verimli kullanmasını sağlar. Örneğin, belirli bir site PHP kullanmıyorsa, mod_php modülü devre dışı bırakılabilir. Bu tür gereksiz modüllerin kapatılması, sunucunun işlem süresini kısaltır ve böylece sayfa yüklenme süreleri hızlandırılmış olur.

6. Sunucu Kaynakları İzlenmeli ve Optimize Edilmeli

Sunucunun kaynak kullanımı düzenli olarak izlenmeli ve gerektiğinde ayarlamalar yapılmalıdır. Apache, log dosyaları aracılığıyla detaylı bilgi sağlar. Bu bilgiler, sunucunun ne zaman ve nasıl yüklendiğini gösterir. Yüksek CPU veya bellek kullanımı tespit edilirse, yapılandırmalar yeniden gözden geçirilmeli ve gerektiğinde sunucu donanımı yükseltilmelidir. Sunucu kaynakları doğru şekilde optimize edilirse, Apache’nin genel performansı iyileştirilmiş olur.

7. Zamanlayıcı (Scheduler) Ayarları Yapılmalı

Apache, taleplerin ne kadar süreyle işleneceğini belirleyen bir zamanlayıcıya sahiptir. Zamanlayıcı ayarları optimize edilmediğinde, özellikle yüksek trafikli sitelerde taleplerin gecikmeli olarak işlenmesi gibi sorunlar ortaya çıkabilir. Timeout ve KeepAliveTimeout gibi parametreler, sunucunun işleme hızını artıracak şekilde ayarlanmalıdır. Bu sayede, Apache sunucusu talepleri daha hızlı işleyebilir ve bekleme süreleri azaltılmış olur.

Apache performans optimizasyonu için yapılan her adımın belirli dosyalarda ve komutlarla uygulanması gerekmektedir. Aşağıda her bir optimizasyon adımının nasıl yapılacağını, hangi dosyada değişiklikler yapılacağını ve hangi komutların kullanılacağını detaylı bir şekilde bulabilirsiniz.

1. KeepAlive Özelliğini Aktifleştirme

Dosya yolu: /etc/apache2/apache2.conf (Debian/Ubuntu) veya /etc/httpd/conf/httpd.conf (CentOS/RHEL)

sudo nano /etc/apache2/apache2.conf

Yapılacak Değişiklikler:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Bu arada KeepAlive özelliği açılır, böylece aynı TCP bağlantısı üzerinden birden fazla istek işlenir. Bu, bağlantı kurma ve kapatma işlemleri sırasında zaman kaybını önler.

2. MPM (Multi-Processing Module) Yapılandırması

Dosya yolu: /etc/apache2/mods-available/mpm_worker.conf veya /etc/apache2/mods-available/mpm_event.conf

sudo a2dismod mpm_prefork
sudo a2enmod mpm_worker
sudo systemctl restart apache2

Yapılacak Değişiklikler:

<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 1000
</IfModule>

Ek bilgi: Worker MPM modülü etkinleştirilir ve performans için optimize edilir. Eğer event MPM tercih ediliyorsa, mpm_worker yerine mpm_event modülü kullanılmalıdır.

3. Cache Kullanımını Optimize Etme

Dosya yolu: /etc/apache2/sites-available/000-default.conf veya sitenize özel yapılandırma dosyası

sudo nano /etc/apache2/sites-available/000-default.conf

Yapılacak Değişiklikler:

<IfModule mod_cache.c>
CacheQuickHandler off
CacheLock on
CacheLockPath /tmp/mod_cache-lock
CacheLockMaxAge 5
CacheIgnoreHeaders Set-Cookie
CacheRoot /var/cache/apache2/mod_cache_disk
CacheEnable disk /
CacheDirLevels 2
CacheDirLength 1
</IfModule>

Ek bilgi: mod_cache ve mod_disk_cache etkinleştirilir ve yapılandırılır. Bu, sunucu tarafında önbellekleme yaparak sayfa yükleme sürelerini iyileştirir.

4. Gzip Sıkıştırma Aktifleştirme

Dosya yolu: /etc/apache2/mods-available/deflate.conf

sudo a2enmod deflate
sudo nano /etc/apache2/mods-available/deflate.conf

Yapılacak Değişiklikler:

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>

Ek bilgi: Gzip sıkıştırma, web sayfalarının boyutunu küçültmek için etkinleştirilir. Bu, veri aktarım süresini azaltır ve sayfa yüklenme sürelerini iyileştirir.

5. Gereksiz Modülleri Devre Dışı Bırakma

sudo a2dismod mod_name

Örnek olarak:

sudo a2dismod autoindex
sudo a2dismod status
sudo a2dismod cgi

Ek bilgi: Gereksiz modüller devre dışı bırakılır, böylece sunucu kaynakları daha verimli kullanılır.

6. Sunucu Kaynaklarını İzleme ve Optimizasyon

Komutlar:

  • CPU ve bellek kullanımını izlemek için: top veya htop
  • Disk kullanımını izlemek için: df -h
  • Apache loglarını izlemek için: tail -f /var/log/apache2/access.log

Ek bilgi: Bu araçlarla sunucunun kaynak kullanımı düzenli olarak izlenir. Yüksek CPU veya bellek kullanımı tespit edilirse, yapılandırmalar yeniden gözden geçirilir.

7. Zamanlayıcı (Scheduler) Ayarları

Dosya yolu: /etc/apache2/apache2.conf veya /etc/httpd/conf/httpd.conf

sudo nano /etc/apache2/apache2.conf

Yapılacak Değişiklikler:

Timeout 300
KeepAliveTimeout 5

Ek bilgi: Timeout ve KeepAliveTimeout ayarları optimize edilir. Bu, Apache sunucusunun talepleri daha hızlı işlemesini sağlar.

Bu adımları izleyerek Apache sunucusunun performansını optimize etmiş olursunuz. Yapılan her değişiklikten sonra Apache sunucusunu yeniden başlatmanız gerekir bunun içinde aşağıdaki komutu kullanabilirsiniz.

sudo systemctl restart apache2

Bir yanıt yazın

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