Pag-optimize ng pagganap ng Apache2

Maraming tao ang gumagamit ng apache2 bilang isang web server. Gayunpaman, kakaunti ang nag-iisip tungkol sa pag-optimize ng pagganap nito, na direktang nakakaapekto sa bilis ng paglo-load ng mga pahina ng site, ang bilis ng pagproseso ng mga script (sa partikular na php), pati na rin ang pagtaas ng pag-load ng CPU at pagtaas ng dami ng RAM na ginamit.

Kaya, ang sumusunod na manual ay dapat makatulong sa mga nagsisimula (at hindi lamang) mga gumagamit.
Ang lahat ng mga halimbawa sa ibaba ay ginamit sa Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

Π˜Ρ‚Π°ΠΊ, Π½Π°Ρ‡Π½Π΅ΠΌ.

1. Hindi pagpapagana ng mga hindi nagamit na module

Ang unang paraan ay ang simpleng huwag paganahin ang mga module na hindi mo ginagamit:

Ang listahan ng kasalukuyang ginagamit na mga module ay maaaring matingnan gamit ang command:

apache2ctl -M

Upang hindi paganahin ang module, gamitin ang command:

a2dismod *Π½Π°Π·Π²Π°Π½ΠΈΠ΅ модуля*

Alinsunod dito, upang paganahin ang module, gamitin ang command:

a2enmod *Π½Π°Π·Π²Π°Π½ΠΈΠ΅ модуля*

Mangyaring tandaan na kapag ginagamit a2dismod, ang pangalan ng module ay dapat na nakasulat nang walang mismong salitang module.

Halimbawa, kung ikaw ay nasa output ng command apache2ctl -M nakita proxy_module, pagkatapos ay upang hindi paganahin ito kailangan mong gamitin ang command - a2dismod proxy

Ang mga module na pinakamaraming naglo-load sa system (mula sa personal na karanasan) ay:

  • PHP, Ruby, Perl at iba pang mga module para sa iba't ibang wika ng scripting
  • SSL
  • Isulat muli
  • CGI

Kaya sa mga kaso kung saan hindi mo kailangan ang mga module na ito, inirerekumenda kong huwag paganahin ang mga module na ito.

Gayundin, pagkatapos i-disable ang anumang module, inirerekumenda ko ang paggamit ng command - apache2ctl configtest, na susuriin ang configuration ng mga site na ginamit at kung ang alinman sa mga naka-disable na module ay kinakailangan para sa kanila, ito ay bubuo ng error.

2. Pagpapalit ng MPM (Multi-Processing Module) at paggamit ng php-fpm

Bilang default, pagkatapos ng pag-install, ang apache2 ay gumagamit ng MPM Prefork (1 thread bawat 1 koneksyon), na makabuluhang binabawasan ang pagganap, ngunit sa parehong oras ay nagpapabuti sa katatagan at seguridad.

Ngunit para ma-optimize ang performance, inirerekomenda ko ang paggamit ng MPM Worker, na nagbibigay-daan sa iyong gumamit ng maramihang mga thread sa bawat koneksyon.

Upang paganahin ito ginagamit namin ang mga sumusunod na utos:

a2dismod mpm_prefork  //ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ prefork
a2dismod php7.3  //ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ php, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зависит ΠΎΡ‚ prefork
a2enmod mpm_worker  //Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ worker

Gayunpaman, kapag gumagamit ng Worker maaari kang magkaroon ng problema dahil... Ang php7.3 module ay nakasalalay sa Prefork module.

Upang malutas ang problemang ito, i-install natin ang php7.3-fpm module, na gagamitin para magpatakbo ng mga script ng PHP:

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  //Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ для Π½Π΅Π³ΠΎ

Kapansin-pansin na ang paggamit ng php-fpm ay mababawasan din ang dami ng RAM na ginagamit ng proseso ng apache2 at bahagyang mapabilis ang pagproseso ng mga script ng PHP.

3. Konklusyon

Kaya, sa gayong mga simpleng pagkilos, nagawa naming i-optimize ang pagganap at bawasan ang pagkarga sa makina (sa kasong ito RPI3).

Siyempre, may daan-daang iba pang mga opsyon sa pag-optimize, tulad ng pagpapagana ng compression (na talagang kapaki-pakinabang, ngunit karamihan ay naka-enable na bilang default), pagbabago ng mga setting ng MPM (configuration file), hindi pagpapagana ng HostnameLookups, atbp., ngunit sa artikulong ito sinubukan kong sumasalamin Ito ang mga puntong higit na nakatulong sa akin, at umaasa akong makakatulong ito sa iba.

Pinagmulan: www.habr.com

Magdagdag ng komento