ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° пСрформанситС Π½Π° Apache2

ΠœΠ½ΠΎΠ³Ρƒ Π»ΡƒΡ“Π΅ користат apache2 ΠΊΠ°ΠΊΠΎ Π²Π΅Π±-сСрвСр. Π‘Π΅ΠΏΠ°ΠΊ, ΠΌΠ°Π»ΠΊΡƒ Π»ΡƒΡ“Π΅ размислуваат Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ пСрформанси, ΡˆΡ‚ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ влијаС Π½Π° Π±Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° страницитС Π½Π° страницата, Π±Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° скриптитС (особСно php), ΠΊΠ°ΠΊΠΎ ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° процСсорот ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π½Π° RAM ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°.

Π’Π°ΠΊΠ°, слСдниот ΠΏΡ€ΠΈΡ€Π°Ρ‡Π½ΠΈΠΊ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΈΠΌ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π½Π° ΠΏΠΎΡ‡Π΅Ρ‚Π½ΠΈΡ†ΠΈΡ‚Π΅ (ΠΈ Π½Π΅ само) корисници.
Π‘ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ Π±Π΅Π° користСни Π½Π° Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

Π—Π½Π°Ρ‡ΠΈ, ајдС Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅.

1. ΠžΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° нСискористСни ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

ΠŸΡ€Π²ΠΈΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΅ Сдноставно Π΄Π° Π³ΠΈ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Π½Π΅ Π³ΠΈ користитС:

Бписокот Π½Π° Ρ‚Π΅ΠΊΠΎΠ²Π½ΠΎ користСни ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΠΈΠ΄ΠΈ со ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

apache2ctl -M

Π—Π° Π΄Π° Π³ΠΎ исклучитС ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚, користСтС ја ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

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

Π‘ΠΏΠΎΡ€Π΅Π΄ Ρ‚ΠΎΠ°, Π·Π° Π΄Π° Π³ΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚, користСтС ја ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

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

Π’Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΈΠΌΠ°Ρ˜Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° ΠΊΠΎΠ³Π° користитС a2dismod, ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ ΠΌΠΎΡ€Π° Π΄Π° Π±ΠΈΠ΄Π΅ напишано Π±Π΅Π· самиот Π·Π±ΠΎΡ€ ΠΌΠΎΠ΄ΡƒΠ».

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ стС Π²ΠΎ ΠΈΠ·Π»Π΅Π·ΠΎΡ‚ ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° apache2ctl -M Π²ΠΈΠ΄ΠΎΠ² прокси_ΠΌΠΎΠ΄ΡƒΠ», ΠΏΠΎΡ‚ΠΎΠ° Π·Π° Π΄Π° Π³ΠΎ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈΡ‚Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја користитС ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° - a2dismod прокси

ΠœΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ ΠΊΠΎΠΈ Π½Π°Ρ˜ΠΌΠ½ΠΎΠ³Ρƒ Π³ΠΎ Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°Π°Ρ‚ систСмот (ΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎ искуство) сС:

  • PHP, Ruby, Perl ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ˜Π°Π·ΠΈΡ†ΠΈ Π·Π° ΡΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°ΡšΠ΅
  • SSL
  • Π Π΅Ρ€ΠΈΡ‚Π°
  • CGI-

Π—Π°Ρ‚ΠΎΠ°, Π²ΠΎ случаи ΠΊΠΎΠ³Π° Π½Π΅ Π²ΠΈ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΎΠ²ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π°ΠΌ Π΄Π° Π³ΠΈ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈΡ‚Π΅ ΠΎΠ²ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, ΠΏΠΎ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° кој Π±ΠΈΠ»ΠΎ ΠΌΠΎΠ΄ΡƒΠ», ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π°ΠΌ Π΄Π° ја користитС ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° - apache2ctl ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°, кој ќС ја ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° користСнитС страници ΠΈ Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ нСкој ΠΎΠ΄ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠΌ Π±ΠΈΠ» Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π΅Π½, ќС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π³Ρ€Π΅ΡˆΠΊΠ°.

2. ΠŸΡ€ΠΎΠΌΠ΅Π½Π° Π½Π° MPM (ΠœΠΎΠ΄ΡƒΠ» Π·Π° ΠΏΠΎΠ²Π΅ΡœΠ΅ΠΊΡ€Π°Ρ‚Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°) ΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ php-fpm

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎ, ΠΏΠΎ ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°, apache2 користи MPM Prefork (1 нишка Π½Π° 1 врска), ΡˆΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π³ΠΈ Π½Π°ΠΌΠ°Π»ΡƒΠ²Π° пСрформанситС, Π½ΠΎ Π²ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅ ја ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΡƒΠ²Π° стабилноста ΠΈ бСзбСдноста.

Но, Π·Π° Π΄Π° сС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π°Ρ‚ пСрформанситС, ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π°ΠΌ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° MPM Worker, кој Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° користитС повСќС нишки ΠΏΠΎ врска.

Π—Π° Π΄Π° Π³ΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΠΌΠ΅, Π³ΠΈ користимС слСднитС ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:

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

ΠœΠ΅Ρ“ΡƒΡ‚ΠΎΠ°, ΠΏΡ€ΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Worker ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΈΠ΄Π΅Ρ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ бидСјќи ... ΠœΠΎΠ΄ΡƒΠ»ΠΎΡ‚ php7.3 зависи ΠΎΠ΄ ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ Prefork.

Π—Π° Π΄Π° Π³ΠΎ Ρ€Π΅ΡˆΠΈΠΌΠ΅ овој ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π΄Π° Π³ΠΎ инсталирамС ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ php7.3-fpm, кој ќС сС користи Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° 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  //Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ для Π½Π΅Π³ΠΎ

Π’Ρ€Π΅Π΄ΠΈ Π΄Π° сС Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ php-fpm исто Ρ‚Π°ΠΊΠ° ќС ја Π½Π°ΠΌΠ°Π»ΠΈ ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π½Π° RAM ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° ΡˆΡ‚ΠΎ ја користи процСсот apache2 ΠΈ ΠΌΠ°Π»ΠΊΡƒ ќС ја Π·Π°Π±Ρ€Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° PHP скриптитС.

3. Π—Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ

Π’Π°ΠΊΠ°, со Ρ‚Π°ΠΊΠ²ΠΈ Сдноставни активности успСавмС Π΄Π° Π³ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ пСрформанситС ΠΈ Π΄Π° Π³ΠΎ Π½Π°ΠΌΠ°Π»ΠΈΠΌΠ΅ ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° (Π²ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜ RPI3).

Π‘Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°, ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ стотици Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π°, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΡ€Π΅ΡΠΈΡ˜Π° (ΡˆΡ‚ΠΎ Π΅ навистина корисно, Π½ΠΎ ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ сС вСќС ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΈ стандардно), ΠΏΡ€ΠΎΠΌΠ΅Π½Π° Π½Π° поставкитС Π·Π° MPM (Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°), ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° HostnameLookups ΠΈΡ‚Π½., Π½ΠΎ Π²ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° сС ΠΎΠ±ΠΈΠ΄ΠΎΠ² Π΄Π° ΠΎΠ΄Ρ€Π°Π·ΡƒΠ²Π°Π°Ρ‚ Ова сС Ρ‚ΠΎΡ‡ΠΊΠΈΡ‚Π΅ ΠΊΠΎΠΈ Π½Π°Ρ˜ΠΌΠ½ΠΎΠ³Ρƒ ΠΌΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Π°, Π° сС Π½Π°Π΄Π΅Π²Π°ΠΌ Π΄Π΅ΠΊΠ° ќС ΠΈΠΌ ΠΏΠΎΠΌΠΎΠ³Π½Π°ΠΌ ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€