Optimalizace výkonu apache2

Mnozí používají apache2 jako webový server. Nicméně málo kdo se zamýšlí nad optimalizací jeho výkonu, což přímo ovlivňuje rychlost načítání stránek webu, rychlost zpracování skriptů (zejména php) a také zvyšuje zátěž na CPU a zvyšuje objem používané RAM.

Tento manuál by měl tedy pomoci začátečníkům (a nejen jim).
Všechny níže uvedené příklady byly použity na Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

Takže, začneme.

1. Vypnutí nepotřebných modulů

Prvním způsobem je prosté vypnutí modulů, které nepoužíváte:

Seznam právě používaných modulů můžete zobrazit příkazem:

apache2ctl -M

K vypnutí modulu se používá příkaz:

a2dismod *název modulu*

Příslušně pro zapnutí modulu se používá příkaz:

a2enmod *název modulu*

Věnujte pozornost tomu, že při použití a2dismod, název modulu je třeba psát bez slova 'modul'.

Například, pokud jste ve výstupu příkazu apache2ctl -M viděli proxy_module, pro jeho vypnutí je třeba použít příkaz — a2dismod proxy

Mezi moduly s největší zátěží (podle osobní zkušenosti) jsou:

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

Takže v těch případech, kdy tyto moduly nepotřebujete, doporučuji tyto moduly vypnout.

Také, po vypnutí jakéhokoliv modulu doporučuji použít příkaz — apache2ctl configtest, který zkontroluje konfiguraci používaných webů a pokud byl některý z vypnutých modulů pro ně nezbytný, vyhodí chybu.

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

Ve výchozím nastavení, po instalaci, apache2 používá MPM Prefork (1 vlákno na 1 spojení), což znatelně snižuje výkon, ale zlepšuje stabilitu a bezpečnost.

Ale pro optimalizaci výkonu doporučuji použít MPM Worker, který umožňuje používat více vláken na jedno spojení.

Pro jeho povolení použijte následující příkazy:

a2dismod mpm_prefork  // Vypínáme prefork
a2dismod php7.3  // Vypínáme modul php, který závisí na prefork
a2enmod mpm_worker  // Zapínáme worker

Nicméně při použití Worker se můžete setkat s problémem, protože modul php7.3 závisí na modulu Prefork.

Pro řešení tohoto problému nainstalujeme modul php7.3-fpm, který bude použit pro zpracování php skriptů:

apt-get update && apt-get install php7.3-fpm  //Instalujeme
systemctl enable php7.3-fpm && systemctl start php7.3-fpm  //Přidáváme do spouštění a spouštíme
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf  //Aktivujeme modul a jeho konfiguraci

Je třeba poznamenat, že použití php-fpm také sníží objem paměti RAM používané procesem apache2 a mírně urychlí zpracování php skriptů.

3. Závěr

Tímto způsobem jsme jednoduchými kroky mohli optimalizovat výkon a snížit zátěž na stroj (v tomto případě RPI3).

Samozřejmě existuje stovky dalších možností optimalizace, jako například povolení komprese (což je opravdu užitečné, ale většinou už je to zapnuto ve výchozím nastavení), změna parametrů (konfiguračních souborů) MPM, zakázání HostnameLookups atd., ale v tomto článku jsem se snažil reflektovat právě ty body, které mi nejvíce pomohly, a doufám, že pomohou i jiným.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster