Yüksek Performans İçin Apache Sunucu Optimizasyonu

Apache HTTP Sunucusu, dünya çapında en yaygın kullanılan web sunucularından biridir. Güvenilirliği, geniş özellik seti ve modüler yapısı sayesinde hem küçük ölçekli web sitelerinde hem de büyük ölçekli uygulamalarda tercih edilir. Ancak, varsayılan ayarları yüksek trafiği kaldıracak şekilde optimize edilmemiştir. Bu nedenle, özellikle yüksek trafik çeken web sitelerinde Apache’nin performansını artırmak için optimizasyon önemlidir. Aşağıda, Apache sunucusunun performansını artırmak için kullanabileceğiniz temel optimizasyon yöntemleri detaylı olarak ele alınmıştır.

Yüksek Performans İçin Apache Sunucu Optimizasyonu

1. Apache MPM (Multi-Processing Module) Seçimi

Apache, birden fazla işlem veya iş parçacığı yönetim moduna sahiptir ve bu modlar MPM olarak adlandırılır. Apache’nin performansı, seçilen MPM türüne bağlı olarak büyük ölçüde değişir. Üç ana MPM türü şunlardır:

  • Prefork MPM: Her istek için ayrı bir süreç oluşturur. Genellikle güvenlik ve stabilite açısından tercih edilir, ancak çok işlemci kullanımı nedeniyle bellek tüketimi yüksektir.
  • Worker MPM: İşlem bazlı değil, iş parçacığı bazlıdır. Prefork’a kıyasla daha az bellek tüketir ve aynı anda daha fazla isteği işleyebilir.
  • Event MPM: Worker MPM’e benzer, ancak statik dosyalar gibi uzun süreli bağlantılar için optimize edilmiştir. Genellikle yüksek trafiğe sahip siteler için idealdir.

Öneri: Yüksek performans gerektiren web sitelerinde Event MPM kullanımı genellikle en iyi sonuçları verir.

2. KeepAlive Ayarlarının Optimize Edilmesi

KeepAlive, bir istemci ile sunucu arasındaki bağlantının birden fazla isteği işlemek için açık kalmasını sağlar. Ancak, çok fazla KeepAlive bağlantısı sunucunun belleğini ve işlem kaynaklarını tüketebilir.

  • KeepAlive On/Off: KeepAlive varsayılan olarak açıktır ve çoğu durumda açık bırakılmalıdır. Ancak, çok sayıda küçük isteğin olduğu durumlarda kapatılması faydalı olabilir.
  • KeepAliveTimeout: Bu ayar, bağlantının açık kalacağı süreyi belirtir. Varsayılan ayar genellikle 5 saniyedir. Yüksek trafiğe sahip siteler için bu süreyi 2-3 saniyeye düşürmek, sunucunun kaynak kullanımını optimize edebilir.
  • MaxKeepAliveRequests: Bu ayar, bir bağlantı üzerinde işlenecek maksimum istek sayısını belirler. Yüksek trafiğe sahip siteler için 100-200 arası bir değer önerilir.
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 2

3. Cache Kullanımı

Web sitenizde statik içerik varsa, Apache’nin mod_cache ve mod_expires modüllerini etkinleştirerek önbellek kullanımıyla performansı artırabilirsiniz. Bu, sunucunun sık kullanılan verileri tekrar işlemden geçirmeden hızlıca sunmasını sağlar.

  • mod_cache: Sunucunun yanıtlarını diskte veya bellekte saklar ve aynı istek geldiğinde yanıtı daha hızlı sunar.
  • mod_expires: Tarayıcılara, statik içeriklerin ne kadar süreyle önbellekte tutulacağını belirtir.
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
CacheEnable disk /
CacheRoot "/var/cache/apache2"
CacheDirLevels 2
CacheDirLength 1

Bu ayarlar, sık kullanılan sayfaların sunucu tarafından daha hızlı yanıtlanmasını sağlar ve sunucu yükünü hafifletir.

4. Gzip Sıkıştırma Kullanımı

Web sitenizde iletilen içerikleri sıkıştırmak, hem bant genişliğini azaltır hem de sayfaların daha hızlı yüklenmesini sağlar. Apache’nin mod_deflate modülü, sunucunun yanıtlarını sıkıştırmak için kullanılır.

LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
AddOutputFilterByType DEFLATE application/javascript

Bu ayarlar, metin tabanlı dosyaların sıkıştırılmasını sağlar ve iletim sırasında boyutlarını azaltarak sayfa yükleme sürelerini hızlandırır.

5. Connection Timeout Ayarları

Her istek için sunucunun ayırdığı süre, sunucunun performansını etkiler. Çok uzun timeout süreleri, sunucu kaynaklarının gereksiz yere kullanılmasına neden olabilir. Aşağıdaki ayarlarla bağlantı sürelerini optimize edebilirsiniz:

Timeout 60

Bu ayar, bir isteğin tamamlanması için verilen maksimum süreyi 60 saniye ile sınırlandırır. Trafiğin türüne ve sunucu performansına bağlı olarak bu değeri daha da düşürebilirsiniz.

6. Etkin Modüllerin Yönetimi

Apache’nin modüler yapısı, ihtiyacınız olmayan modüllerin kapatılmasına olanak tanır. Sunucunuzda gereksiz modüllerin etkin olması performans kayıplarına yol açabilir. Bu nedenle, kullanılmayan modülleri kapatmak mantıklı olacaktır.

LoadModule status_module modules/mod_status.so # İhtiyacınız yoksa kapatın

Her modülü kontrol ederek, yalnızca gerekli olanları açık tutmalısınız.

7. HTTP/2 Protokolü Kullanımı

HTTP/2, HTTP/1.1’e kıyasla daha verimli veri iletimi sağlar. Aynı anda birden fazla isteğin işlenmesini sağlar, bu da özellikle yüksek trafikli sitelerde performansı artırır. Apache’de HTTP/2’yi etkinleştirmek için aşağıdaki ayarları yapabilirsiniz:

LoadModule http2_module modules/mod_http2.so
Protocols h2 h2c http/1.1

HTTP/2 ile birlikte sayfa yükleme sürelerinde ciddi bir iyileşme gözlemlenebilir.

8. Sunucu Donanımını Optimize Etme

Apache’nin performansı sadece yazılımsal ayarlarla değil, donanımsal kaynaklarla da ilişkilidir. Sunucuya daha fazla RAM eklemek veya daha hızlı bir CPU kullanmak, Apache’nin genel performansını artırabilir. Ayrıca SSD diskler kullanarak disk I/O hızlarını artırabilirsiniz.

9. Log Düzeyini Azaltma

Apache, varsayılan olarak ayrıntılı log tutar. Ancak, yüksek trafikli sitelerde bu loglar sunucunun performansını etkileyebilir. Gereksiz loglama seviyelerini düşürerek sunucu yükünü azaltabilirsiniz.

LogLevel warn

Bu ayar, yalnızca uyarı ve hata mesajlarının kaydedilmesini sağlar. Gereksiz ayrıntıları tutarak performans kaybını önler.

Değerlendirme

Apache sunucusunu optimize etmek, performans artışı sağlamak için hayati öneme sahiptir. Yukarıda belirtilen adımlar, genel performansı iyileştirecek ve özellikle yüksek trafiğe sahip web sitelerinde sunucu yükünü azaltacaktır. Bu optimizasyonlar sayesinde sunucunuzun kaynaklarını daha verimli kullanabilir, daha hızlı sayfa yükleme süreleri ve daha iyi kullanıcı deneyimi sağlayabilirsiniz.

Share your love
WPW

WPW

Yazar, teknolojiye meraklı, grafik tasarımcı, sosyal medya ve seo danışmanı...

Articles: 543