Optimalizace výkonu Apache2

Mnoho lidí používá apache2 jako webový server. Málokdo však přemýšlí o optimalizaci jeho výkonu, což přímo úměrně ovlivňuje rychlost načítání stránek webu, rychlost zpracování skriptů (zejména php), stejně jako zvýšení zátěže CPU a zvýšení množství použité RAM.

Začátečníkům (nejen) uživatelům by tak měl pomoci následující manuál.
Všechny příklady níže byly použity na Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

Takže, pojďme začít.

1. Deaktivace nepoužívaných modulů

První metodou je jednoduše zakázat moduly, které nepoužíváte:

Seznam aktuálně používaných modulů lze zobrazit příkazem:

apache2ctl -M

Chcete-li modul deaktivovat, použijte příkaz:

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

Chcete-li modul povolit, použijte příkaz:

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

Vezměte prosím na vědomí, že při použití a2dismod, název modulu musí být napsán bez samotného slova modul.

Pokud jste například ve výstupu příkazu apache2ctl -M viděl proxy_modul, pak jej zakázat musíte použít příkaz - a2dismod proxy

Moduly, které nejvíce zatěžují systém (z osobní zkušenosti), jsou:

  • PHP, Ruby, Perl a další moduly pro různé skriptovací jazyky
  • SSL
  • Přepsat
  • CGI

Takže v případech, kdy tyto moduly nepotřebujete, doporučuji tyto moduly deaktivovat.

Také po vypnutí jakéhokoli modulu doporučuji použít příkaz - configtest apache2ctl, který zkontroluje konfiguraci používaných stránek a pokud pro ně byl nutný některý z deaktivovaných modulů, vygeneruje chybu.

2. Změna MPM (Multi-Processing Module) a použití php-fpm

Standardně po instalaci apache2 používá MPM Prefork (1 vlákno na 1 připojení), což výrazně snižuje výkon, ale zároveň zlepšuje stabilitu a bezpečnost.

Pro optimalizaci výkonu ale doporučuji používat MPM Worker, který umožňuje používat více vláken na připojení.

K jeho aktivaci používáme následující příkazy:

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

Při používání Worker však můžete narazit na problém, protože... Modul php7.3 závisí na modulu Prefork.

Chcete-li tento problém vyřešit, nainstalujme modul php7.3-fpm, který bude sloužit ke spouštění PHP skriptů:

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  //Включаем модуль и конфиг для него

Stojí za zmínku, že použití php-fpm také sníží množství paměti RAM používané procesem apache2 a mírně zrychlí zpracování PHP skriptů.

3. Závěr

Takto jednoduchými akcemi jsme byli schopni optimalizovat výkon a snížit zatížení stroje (v tomto případě RPI3).

Samozřejmě existují stovky dalších možností optimalizace, jako je povolení komprese (což je opravdu užitečné, ale většina je již ve výchozím nastavení povolena), změna nastavení MPM (konfigurační soubory), zakázání vyhledávání hostitelských jmen atd., ale v tomto článku jsem se pokusil odrážet Toto jsou body, které mi pomohly nejvíce a doufám, že pomohou i ostatním.

Zdroj: www.habr.com

Přidat komentář