Apache2 performans optimizasyonu

Birçok kişi Apache2'yi web sunucusu olarak kullanıyor. Bununla birlikte, çok az kişi, site sayfalarının yükleme hızını, komut dosyalarının (özellikle php) işlem hızını, ayrıca CPU yükündeki artışı ve kullanılan RAM miktarındaki artışı doğrudan orantılı olarak etkileyen performansını optimize etmeyi düşünüyor.

Bu nedenle, aşağıdaki kılavuz yeni başlayanlara (sadece değil) kullanıcılara yardımcı olacaktır.
Aşağıdaki örneklerin tümü Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3'te kullanılmıştır.

Peki, hadi başlayalım.

1. Kullanılmayan modüllerin devre dışı bırakılması

İlk yöntem, kullanmadığınız modülleri devre dışı bırakmaktır:

Şu anda kullanılan modüllerin listesi şu komutla görüntülenebilir:

apache2ctl -M

Modülü devre dışı bırakmak için şu komutu kullanın:

a2dismod *название модуля*

Buna göre modülü etkinleştirmek için şu komutu kullanın:

a2enmod *название модуля*

Lütfen kullanırken unutmayın a2dismod, modülün adı module kelimesinin kendisi olmadan yazılmalıdır.

Örneğin, komutun çıktısındaysanız apache2ctl -M testere proxy_module, daha sonra devre dışı bırakmak için şu komutu kullanmanız gerekir - a2dismod proxy'si

Sistemi en çok yükleyen modüller (kişisel deneyime göre):

  • Çeşitli kodlama dilleri için PHP, Ruby, Perl ve diğer modüller
  • SSL
  • yeniden yazmak
  • CGI

Dolayısıyla bu modüllere ihtiyaç duymadığınız durumlarda bu modülleri devre dışı bırakmanızı öneririm.

Ayrıca herhangi bir modülü devre dışı bıraktıktan sonra şu komutu kullanmanızı öneririm - apache2ctl yapılandırma testiKullanılan sitelerin yapılandırmasını kontrol edecek ve devre dışı bırakılan modüllerden herhangi birinin onlar için gerekli olup olmadığını kontrol edecek, bir hata üretecektir.

2. MPM'yi (Çoklu İşleme Modülü) değiştirme ve php-fpm kullanma

Apache2, kurulumdan sonra varsayılan olarak MPM Prefork'u (1 bağlantı başına 1 iş parçacığı) kullanır; bu, performansı önemli ölçüde azaltır, ancak aynı zamanda kararlılığı ve güvenliği artırır.

Ancak performansı optimize etmek için bağlantı başına birden fazla iş parçacığı kullanmanıza olanak tanıyan MPM Worker'ı kullanmanızı öneririm.

Etkinleştirmek için aşağıdaki komutları kullanıyoruz:

a2dismod mpm_prefork  //Отключаем prefork
a2dismod php7.3  //Отключаем модуль php, который зависит от prefork
a2enmod mpm_worker  //Включаем worker

Ancak Worker'ı kullanırken bir sorunla karşılaşabilirsiniz çünkü... Php7.3 modülü Prefork modülüne bağlıdır.

Bu sorunu çözmek için PHP betiklerini çalıştırmak için kullanılacak php7.3-fpm modülünü yükleyelim:

apt-get update && apt-get install php7.3-fpm  //Устанавливаем
systemctl enable php7.3-fpm && systemctl start php7.3-fpm  //Добавляем в автозагрузку и запускаем
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf  //Включаем модуль и конфиг для него

Php-fpm kullanmanın Apache2 işlemi tarafından kullanılan RAM miktarını da azaltacağını ve PHP betiklerinin işlenmesini biraz hızlandıracağını belirtmekte fayda var.

3. Sonuç

Böylece, bu kadar basit eylemlerle performansı optimize edebildik ve makine üzerindeki yükü azaltabildik (bu durumda RPI3).

Elbette, sıkıştırmayı etkinleştirmek (bu gerçekten kullanışlıdır, ancak çoğu zaten varsayılan olarak etkindir), MPM ayarlarını (yapılandırma dosyaları) değiştirmek, Ana Bilgisayar Adı Aramalarını devre dışı bırakmak vb. gibi yüzlerce başka optimizasyon seçeneği vardır, ancak bu makalede şunu yapmaya çalıştım: Reflect Bunlar bana en çok yardımcı olan noktalardır ve umarım başkalarına da yardımcı olur.

Kaynak: habr.com

Yorum ekle