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