ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° производитСлността Π½Π° 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 configtest, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ провСрява конфигурацията Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ сайтовС ΠΈ Π°ΠΊΠΎ някой ΠΎΡ‚ Π·Π°Π±Ρ€Π°Π½Π΅Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π΅ Π±ΠΈΠ» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π·Π° тях, Ρ‰Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π³Ρ€Π΅ΡˆΠΊΠ°.

2. ΠŸΡ€ΠΎΠΌΡΠ½Π° Π½Π° MPM (Multi-Processing Module) ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° 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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€