PHP-FPM (FastCGI Process Manager): ΠΡΠ»Π½ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ
PHP-FPM (PHP FastCGI Process Manager) Π΅ Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° PHP ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΊΠΎΡΡΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° FastCGI, Π·Π° Π΄Π° ΠΎΡΠ΄Π΅Π»ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° PHP ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ°. ΠΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ° Π½ΠΎΠ² PHP ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π·Π° Π²ΡΡΠΊΠ° Π²Ρ ΠΎΠ΄ΡΡΠ° HTTP Π·Π°ΡΠ²ΠΊΠ° β ΠΊΠ°ΠΊΡΠΎ ΠΏΡΠ°Π²ΠΈ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈΡΡ CGI β PHP-FPM ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΠΎΡΡΠΎΡΠ½Π΅Π½ ΠΏΡΠ» ΠΎΡ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ°Ρ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΈ Π²ΡΡΡΠ°Ρ PHP ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ Ρ Π΄ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΠΎ-Π½ΠΈΡΠΊΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ.
ΠΠ° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΡΠ΅Π± ΡΡΡΠ²ΡΡ, ΡΠ°Π±ΠΎΡΠ΅Ρ Ρ WordPress, Laravel, Symfony ΠΈΠ»ΠΈ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ PHP ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, PHP-FPM Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ. Π’ΠΎΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠ΅ΡΠΈΠ·Π΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ» Π²ΡΡΡ
Ρ ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° ΠΎΡ Π·Π°ΡΠ²ΠΊΠΈ ΠΈ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° β Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ Ρ mod_php ΠΈΠ»ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ CGI.
ΠΠ°ΠΊ PHP-FPM ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΎΡ CGI ΠΈ mod_php
ΠΠ° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ Π·Π°ΡΠΎ PHP-FPM Π΅ Π²Π°ΠΆΠ΅Π½, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π·Π°ΠΌΠ΅ΡΡΠ²Π° ΠΈ Π·Π°ΡΠΎ ΡΠ΅Π·ΠΈ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΈ ΡΠ° Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΈ ΠΏΡΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅.
| Π€ΡΠ½ΠΊΡΠΈΡ | CGI | mod_php | PHP-FPM |
|---|---|---|---|
| ΠΠΎΠ΄Π΅Π» Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ | ΠΠΎΠ² ΠΏΡΠΎΡΠ΅Ρ Π·Π° Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ° | ΠΠ³ΡΠ°Π΄Π΅Π½ Π² Apache | ΠΠΎΡΡΠΎΡΠ½Π΅Π½ ΠΏΡΠ» ΠΎΡ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ |
| ΠΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° | ΠΠ½ΠΎΠ³ΠΎ Π½ΠΈΡΠΊΠ° | Π£ΠΌΠ΅ΡΠ΅Π½Π° | ΠΡΠ»ΠΈΡΠ½Π° |
| Π‘Π²ΡΡΠ·Π°Π½ΠΎΡΡ Ρ ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ° | Π’ΡΡΠ½Π° | Π’ΡΡΠ½Π° (ΡΠ°ΠΌΠΎ Apache) | ΠΡΠ΄Π΅Π»Π΅Π½Π° (Π²ΡΠ΅ΠΊΠΈ ΡΡΡΠ²ΡΡ) |
| ΠΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΡΠ°ΠΉΡ | ΠΡΠΌΠ° | ΠΡΠΌΠ° | ΠΡΠ»Π½Π° (ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠ»ΠΎΠ²Π΅) |
| ΠΠ»Π°Π²Π½ΠΎ ΠΏΡΠ΅Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ | ΠΠ΅ | ΠΠ΅ | ΠΠ° |
| ΠΠ°Π²Π΅Π½ Π»ΠΎΠ³ / ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ | ΠΠ΅ | ΠΠ΅ | ΠΠ° |
| ΠΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ | ΠΠ΅ | ΠΠ΅ | ΠΠ° |
| ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Unix ΡΠΎΠΊΠ΅Ρ | ΠΠ΅ | ΠΠ΅ | ΠΠ° |
| Π‘ΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ NGINX | ΠΠ΅ | ΠΠ΅ | ΠΠ° |
CGI ΡΡΠ°ΡΡΠΈΡΠ° Π½ΠΎΠ² OS ΠΏΡΠΎΡΠ΅Ρ Π·Π° Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ°. ΠΡΠΈ ΡΠΌΠ΅ΡΠ΅Π½ ΡΡΠ°ΡΠΈΠΊ ΡΠΎΠ²Π° ΡΡΠ·Π΄Π°Π²Π° Ρ
ΠΈΠ»ΡΠ΄ΠΈ ΡΠΈΠΊΠ»ΠΈ fork/exec/exit Π² ΠΌΠΈΠ½ΡΡΠ°, ΠΏΡΠ΅ΡΠΎΠ²Π°ΡΠ²Π°ΠΉΠΊΠΈ CPU ΠΈ ΠΏΠ°ΠΌΠ΅ΡΡΠ°. mod_php Π²Π³ΡΠ°ΠΆΠ΄Π° PHP ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ Apache ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ Apache ΠΏΡΠΎΡΠ΅Ρ β Π΄ΠΎΡΠΈ ΡΠ°ΠΊΡΠ², ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Ρ ΡΡΠ°ΡΠΈΡΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ β Π½ΠΎΡΠΈ ΠΏΡΠ»Π½ΠΎΡΠΎ PHP ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°. PHP-FPM ΡΠ΅ΡΠ°Π²Π° ΠΈ Π΄Π²Π°ΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°: ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ ΡΠ° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ ΠΈ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΈ ΠΎΡ ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ NGINX ΠΈΠ»ΠΈ Apache ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΡΡΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π°ΡΠΈΠ²Π½ΠΎ, Π΄ΠΎΠΊΠ°ΡΠΎ PHP-FPM ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ°ΠΌΠΎ PHP ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° PHP-FPM: ΠΠΎΠ΄ΡΠΎΠ±Π΅Π½ ΠΏΠΎΡΠΎΠΊ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅
Π Π°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²ΡΡΡΠ΅ΡΠ½ΠΈΡ ΠΏΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π΅ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ.
- ΠΡΠ°ΡΠ·ΡΡΡΡ ΠΈΠ·ΠΏΡΠ°ΡΠ° HTTP Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΡΠ΅ΡΡΡΡ
.php. - Π£Π΅Π± ΡΡΡΠ²ΡΡΡΡ (NGINX ΠΈΠ»ΠΈ Apache) ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΈ Ρ ΡΡΠΏΠΎΡΡΠ°Π²Ρ Ρ location Π±Π»ΠΎΠΊ ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°
FilesMatch. - Π£Π΅Π± ΡΡΡΠ²ΡΡΡΡ ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΊΡΠΌ PHP-FPM ΡΡΠ΅Π· ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° FastCGI β ΠΈΠ»ΠΈ ΡΡΠ΅Π· Unix Π΄ΠΎΠΌΠ΅ΠΉΠ½ ΡΠΎΠΊΠ΅Ρ (
/run/php/php8.2-fpm.sock), ΠΈΠ»ΠΈ ΡΡΠ΅Π· TCP ΡΠΎΠΊΠ΅Ρ (127.0.0.1:9000). - ΠΠ»Π°Π²Π½ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° PHP-FPM Π½Π°ΡΠΎΡΠ²Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΊΡΠΌ Π½Π°Π»ΠΈΡΠ΅Π½ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠ».
- Π Π°Π±ΠΎΡΠ½ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° PHP ΡΠΊΡΠΈΠΏΡΠ°, Π·Π°ΠΏΠΈΡΠ²Π° Π²
stdoutΠΈ Π²ΡΡΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ° Π½Π° ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ°. - Π£Π΅Π± ΡΡΡΠ²ΡΡΡΡ Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΡΠ°Π½ΠΈΡ HTML Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
- Π Π°Π±ΠΎΡΠ½ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π΅ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π° β ΡΠΎΠΉ ΡΠ΅ Π²ΡΡΡΠ° Π² ΠΏΡΠ»Π° Π½Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ, Π³ΠΎΡΠΎΠ² Π·Π° ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ°.
Unix ΡΠΎΠΊΠ΅ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ ΠΏΡΠ΅Π΄ TCP Π·Π° Π»ΠΎΠΊΠ°Π»Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΡ ΠΈΠ·ΡΡΠ»ΠΎ TCP/IP ΡΡΠ΅ΠΊΠ°, Π½Π°ΠΌΠ°Π»ΡΠ²Π°ΠΉΠΊΠΈ Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΡΠ° Ρ 10β20% Π² ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°ΠΉΠΊΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΎΡ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΠΏΠΎΡΡ ΠΈ loopback ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ.
Π Π΅ΠΆΠΈΠΌΠΈ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅
PHP-FPM ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΡΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° pm (ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ), ΠΊΠ°ΡΠΎ ΠΈΠ·Π±ΠΎΡΡΡ Π½Π° Π³ΡΠ΅ΡΠ΅Π½ Π΅ Π΅Π΄Π½Π° ΠΎΡ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅.
pm = static
Π€ΠΈΠΊΡΠΈΡΠ°Π½ Π±ΡΠΎΠΉ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΡΠ°ΡΠΈΠΊΠ°. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠΎΠ²Π° Π½Π° dedicated ΡΡΡΠ²ΡΡΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈΠΌΠ°, ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΏΡΠΈ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ.
pm = static
pm.max_children = 20pm = dynamic
PHP-FPM ΡΡΠ°ΡΡΠΈΡΠ° Π±Π°Π·ΠΎΠ² Π±ΡΠΎΠΉ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ° Π½Π°Π³ΠΎΡΠ΅ ΠΈΠ»ΠΈ Π½Π°Π΄ΠΎΠ»Ρ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π³ΡΠ°Π½ΠΈΡΠΈ. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΡΠ΅Π΄ΠΈ Π·Π° VPS Π₯ΠΎΡΡΠΈΠ½Π³.
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500pm = ondemand
Π Π°Π±ΠΎΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Ρ ΡΠ°ΠΌΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΈΡΡΠΈΠ³Π½Π΅ Π·Π°ΡΠ²ΠΊΠ° ΠΈ ΡΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Ρ ΡΠ»Π΅Π΄ pm.process_idle_timeout ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ. Π’ΠΎΠ²Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΏΡΠΈ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ ΠΈ Π΅ ΠΈΠ΄Π΅Π°Π»Π½ΠΎ Π·Π° ΡΠ°ΠΉΡΠΎΠ²Π΅ Ρ Π½ΠΈΡΡΠΊ ΡΡΠ°ΡΠΈΠΊ ΠΈΠ»ΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π΄Π΅ΡΠ΅ΡΠΊΠΈ ΠΏΡΠ»ΠΎΠ²Π΅ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
pm = ondemand
pm.max_children = 20
pm.process_idle_timeout = 10sΠΡΠΈΡΠΈΡΠ΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ: ondemand Π²ΡΠ²Π΅ΠΆΠ΄Π° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ ΠΏΡΠΈ ΡΡΡΠ΄Π΅Π½ ΡΡΠ°ΡΡ ΠΏΡΠΈ ΠΏΡΡΠ²Π°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΡΠ»Π΅Π΄ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π½Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ. ΠΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΡΠΌ Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ, dynamic Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΈΡΡ ΠΈΠ·Π±ΠΎΡ.
ΠΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° pm.max_children
Π’ΡΠΊ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ Π΄ΠΎΠΏΡΡΠΊΠ°Ρ ΡΠΊΡΠΏΠΎΡΡΡΡΠ²Π°ΡΠΈ Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ°Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ²ΡΡΠ΄Π΅ Π²ΠΈΡΠΎΠΊΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π·Π° pm.max_children ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π° ΠΈΠ·ΡΠ΅ΡΠΏΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ OOM ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½ΠΈΡ; ΡΠ²ΡΡΠ΄Π΅ Π½ΠΈΡΠΊΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π° ΠΎΠΏΠ°ΡΠΊΠΈ ΠΎΡ Π·Π°ΡΠ²ΠΊΠΈ ΠΈ Π³ΡΠ΅ΡΠΊΠΈ 502 ΠΏΡΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅.
ΠΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° ΡΠΎΡΠΌΡΠ»Π°:
pm.max_children = (Available RAM for PHP) / (Average PHP worker memory usage)ΠΠ° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΡΠ΅Π΄Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ Π½Π° PHP ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ:
ps --no-headers -o "rss,cmd" -C php-fpm8.2 | awk '{ sum+=$1 } END { printf "Average: %d MBn", sum/NR/1024 }'ΠΠ° VPS Ρ 2 GB RAM, ΠΊΡΠ΄Π΅ΡΠΎ NGINX, MySQL ΠΈ OS ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ°Ρ ~600 MB, ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°ΡΠ΅ Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 1 400 MB Π·Π° PHP. ΠΠΊΠΎ Π²ΡΠ΅ΠΊΠΈ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ~70 MB, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° pm.max_children Π΅ 20. ΠΠΈΠΊΠΎΠ³Π° Π½Π΅ Ρ Π·Π°Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π° Π±Π°Π·Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° PHP-FPM
Debian / Ubuntu
sudo apt update
sudo apt install php8.2-fpm
sudo systemctl enable php8.2-fpm
sudo systemctl start php8.2-fpmCentOS / AlmaLinux / RHEL (Ρ Remi Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅)
sudo dnf install epel-release
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
sudo dnf module enable php:remi-8.2
sudo dnf install php-fpm
sudo systemctl enable php-fpm
sudo systemctl start php-fpmΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ ΡΡΠ»ΡΠ³Π°ΡΠ° ΡΠ°Π±ΠΎΡΠΈ ΠΈ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅ΡΠ΅ ΠΏΡΡΡ Π½Π° ΡΠΎΠΊΠ΅ΡΠ°:
sudo systemctl status php8.2-fpm
ls -la /run/php/ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° PHP-FPM ΠΏΡΠ»ΠΎΠ²Π΅
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° PHP-FPM ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π² /etc/php/8.2/fpm/php-fpm.conf, Π½ΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π½Π° ΠΏΡΠ»ΠΎΠ²Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π² /etc/php/8.2/fpm/pool.d/. ΠΠ° RHEL-Π±Π°Π·ΠΈΡΠ°Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΡΠ»ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ Π² /etc/php-fpm.d/.
ΠΡΠ΅ΠΊΠΈ ΠΏΡΠ» Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π° ΡΡΠ΅Π΄Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. Π Π°Π±ΠΎΡΠ°ΡΠ° Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ PHP ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡΠΈ ΡΡΡΠ²ΡΡ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ WordPress ΡΠ°ΠΉΡ ΠΈ Laravel API β ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΠΏΡΠ»ΠΎΠ²Π΅ Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΏΡΡΠΈΡΠ° Π½Π° ΡΠΎΠΊΠ΅ΡΠΈ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅. Π’ΠΎΠ²Π° Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΅Π½Π°Π½ΡΠ½ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-ΡΠΈΠ³ΡΡΠ½Π° ΠΎΡ ΡΠΏΠΎΠ΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΏΡΠ».
ΠΡΠΈΠΌΠ΅Ρ: ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΠΏΡΠ»
[myapp]
user = myapp
group = myapp
; Unix socket β always prefer this over TCP for local communication
listen = /run/php/myapp-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
; Process manager
pm = dynamic
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
pm.max_requests = 1000
; Slow log β log requests taking longer than 2 seconds
slowlog = /var/log/php-fpm/myapp-slow.log
request_slowlog_timeout = 2s
; Status and ping endpoints
pm.status_path = /fpm-status
ping.path = /fpm-ping
; Environment isolation
clear_env = yes
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
; PHP value overrides per pool
php_admin_value[error_log] = /var/log/php-fpm/myapp-error.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 256M
php_admin_value[upload_max_filesize] = 64M
php_admin_value[post_max_size] = 64MΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° clear_env = yes Π΅ ΠΊΡΠΈΡΠΈΡΠ½Π° Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π²Π°. ΠΠ΅Π· Π½Π΅Ρ PHP ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° ΠΎΡ Π³Π»Π°Π²Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ, ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΠΈΠ·ΡΠΈΡΠ°ΠΉΠΊΠΈ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π΄Π°Π½Π½ΠΈ Π² $_ENV Π½Π° Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ Π½Π° PHP-FPM Ρ NGINX
NGINX Π½ΡΠΌΠ° Π½Π°ΡΠΈΠ²Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° PHP β ΡΠΎΠΉ ΡΠ°Π·ΡΠΈΡΠ° ΠΈΠ·ΡΡΠ»ΠΎ Π½Π° FastCGI Π·Π° Π΄Π΅Π»Π΅Π³ΠΈΡΠ°Π½Π΅ Π½Π° PHP Π·Π°ΡΠ²ΠΊΠΈ. Π’ΠΎΠ²Π° Π²ΡΡΡΠ½ΠΎΡΡ Π΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ: NGINX ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΡΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡΠΈ ΠΏΠΎΡΡΠΈ Π½ΡΠ»Π΅Π²Π° ΡΠ΅Π½Π°, Π΄ΠΎΠΊΠ°ΡΠΎ PHP-FPM ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ°ΠΌΠΎ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅.
server {
listen 80;
server_name example.com;
root /var/www/myapp/public;
index index.php index.html;
# Serve static files directly, no PHP involvement
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Delegate PHP to PHP-FPM
location ~ .php$ {
# Security: prevent executing uploaded files as PHP
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/run/php/myapp-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
# Performance tuning
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_read_timeout 300;
}
# Block access to the FPM status page from public
location ~ ^/(fpm-status|fpm-ping)$ {
allow 127.0.0.1;
deny all;
fastcgi_pass unix:/run/php/myapp-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}ΠΠ΅Π»Π΅ΠΆΠΊΠ° Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ°: Π Π΅Π΄ΡΡ try_files $uri =404; ΠΏΡΠ΅Π΄ΠΈ fastcgi_pass Π½Π΅ Π΅ ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ. ΠΠ΅Π· Π½Π΅Π³ΠΎ NGINX ΡΠ΅ ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠΈ Π·Π° Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΊΡΠΌ PHP-FPM, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ Π°ΡΠ°ΠΊΠΈ Π·Π° ΠΎΠ±Ρ
ΠΎΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΡΠΈΡΠ°, ΠΏΡΠΈ ΠΊΠΎΠΈΡΠΎ Π½Π°ΠΏΠ°Π΄Π°ΡΠ΅Π»ΡΡ ΠΊΠ°ΡΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΎ PHP ΠΊΠΎΠ΄, ΠΈ ΠΏΠΎΠ΄ΠΌΠ°ΠΌΠ²Π° ΡΡΡΠ²ΡΡΠ° Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ.
ΠΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ Π½Π° PHP-FPM Ρ Apache
Apache ΠΈΠ·ΠΈΡΠΊΠ²Π° mod_proxy_fcgi Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ Ρ PHP-FPM. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ mod_php, ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Apache Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ° PHP-FPM ΠΊΠ°ΡΠΎ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΠΉΠΊΠΈ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΡΠ°.
sudo a2enmod proxy_fcgi setenvif
sudo systemctl restart apache2ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π΅Π½ Ρ ΠΎΡΡ:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/myapp/public
<Directory /var/www/myapp/public>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch ".php$">
SetHandler "proxy:unix:/run/php/myapp-fpm.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/myapp-error.log
CustomLog ${APACHE_LOG_DIR}/myapp-access.log combined
</VirtualHost>ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π·Π° ΡΡΠ°ΡΡΡ Π½Π° PHP-FPM
ΠΠ³ΡΠ°Π΄Π΅Π½Π°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° Π·Π° ΡΡΠ°ΡΡΡ Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π½Π° PHP-FPM. Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ pm.status_path Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ Π² ΡΠ°ΠΉΠ»Π° Π½Π° ΠΏΡΠ»Π°, Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ Π·Π°ΡΠ²ΠΊΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ:
sudo -u www-data SCRIPT_NAME=/fpm-status SCRIPT_FILENAME=/fpm-status REQUEST_METHOD=GET cgi-fcgi -bind -connect /run/php/myapp-fpm.sockΠΠ»ΠΈ, ΠΏΠΎ-ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎ, ΡΡΠ΅Π· curl ΡΠ»Π΅Π΄ ΠΈΠ·Π»Π°Π³Π°Π½Π΅ΡΠΎ ΠΌΡ Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π²ΡΡΡΠ΅ΡΠ΅Π½ endpoint:
curl http://127.0.0.1/fpm-status?fullΠΠ»ΡΡΠΎΠ²ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π·Π° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅:
listen queue: ΠΠ°ΡΠ²ΠΊΠΈ, ΡΠ°ΠΊΠ°ΡΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ. ΠΡΡΠΊΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π°Π΄ 0 ΠΏΡΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅pm.max_childrenΠ΅ ΡΠ²ΡΡΠ΄Π΅ Π½ΠΈΡΠΊΠ°.active processes: Π Π°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠΈ PHP Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°. ΠΠΊΠΎ ΡΠΎΠ²Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π΅ ΡΠ°Π²Π½ΠΎ Π½Π°pm.max_children, ΡΡΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½Π°Π»ΠΈ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅ΡΠ°.slow requests: ΠΡΠΌΡΠ»Π°ΡΠΈΠ²Π΅Π½ Π±ΡΠΎΠΉ Π·Π°ΡΠ²ΠΊΠΈ, Π½Π°Π΄Ρ Π²ΡΡΠ»ΠΈΠ»ΠΈrequest_slowlog_timeout. ΠΠ°ΡΠ°ΡΡΠ²Π°Ρ Π±ΡΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π±Π°Π²Π½ΠΈΡ Π»ΠΎΠ³ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°
ΠΠ°Π²Π½ΠΈΡΡ Π»ΠΎΠ³ Π·Π°ΠΏΠΈΡΠ²Π° ΠΏΡΠ»Π΅Π½ PHP stack trace Π·Π° Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ°, Π½Π°Π΄Ρ Π²ΡΡΠ»ΡΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠ°Π³. Π’ΠΎΠ²Π° Π΅ Π±Π΅Π·ΡΠ΅Π½Π½ΠΎ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° N+1 ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ Π·Π°ΡΠ²ΠΊΠΈ, Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠΈ I/O ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΡΠΈΠΊΠ»ΠΈ, Π±Π΅Π· Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΡΠ»Π΅Π½ ΠΏΡΠΎΡΠΈΠ»Π΅Ρ.
slowlog = /var/log/php-fpm/myapp-slow.log
request_slowlog_timeout = 2sΠΠ°ΠΏΠΈΡ Π² Π±Π°Π²Π½ΠΈΡ Π»ΠΎΠ³ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
[21-Jun-2025 14:32:11] [pool myapp] pid 18432
script_filename = /var/www/myapp/public/index.php
[0x00007f3b4c001e80] PDOStatement->execute() /var/www/myapp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:338
[0x00007f3b4c001d40] runQueryCallback() /var/www/myapp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:295Π’ΠΎΠ²Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π²ΠΈ ΠΊΠ°Π·Π²Π°, ΡΠ΅ ΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΌΡΡΡΠΎ Π΅ Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, Π° Π½Π΅ PHP Π»ΠΎΠ³ΠΈΠΊΠ° β Π½Π°ΡΠΎΡΠ²Π°ΠΉΠΊΠΈ ΡΡΠΈΠ»ΠΈΡΡΠ° Π²ΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠ΅ΡΠΈΠ·Π½ΠΎ.
PHP-FPM Ρ OPcache: Π‘ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎΡΠΎ ΡΡΡΠ΅ΡΠ°Π½ΠΈΠ΅
PHP-FPM ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅; OPcache Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΎΡ ΠΏΠ°ΡΡΠ²Π°Π½Π΅ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° PHP ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡΠΈ Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ°. ΠΠ°Π΅Π΄Π½ΠΎ ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ°Ρ ΠΏΡΠ»Π½ΠΈΡ ΡΡΠ΅ΠΊ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° PHP Π² Linux.
ΠΠΊΡΠΈΠ²ΠΈΡΠ°ΠΉΡΠ΅ ΠΈ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ OPcache Π² /etc/php/8.2/fpm/php.ini ΠΈΠ»ΠΈ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ /etc/php/8.2/fpm/conf.d/10-opcache.ini:
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000
opcache.revalidate_freq=0
opcache.validate_timestamps=0
opcache.jit_buffer_size=128M
opcache.jit=tracingΠΠ°Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° validate_timestamps=0 Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ Π·Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡΠΈ Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ° β Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° ΡΡΠ΅Π΄Π°. ΠΠΎΠ³Π°ΡΠΎ ΡΠ°Π·Π³ΡΡΡΠ°ΡΠ΅ Π½ΠΎΠ² ΠΊΠΎΠ΄, Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°ΠΉΡΠ΅ ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π½ΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠ΅ΡΠ°:
sudo systemctl reload php8.2-fpmΠΠ° VPS Ρ cPanel, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° OPcache ΡΠ΅ΡΡΠΎ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° PHP, Π½ΠΎ ΡΡΡΠ½ΠΎΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ ΡΡΠ΅Π· ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ .ini Π²ΠΈΠ½Π°Π³ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎ-ΡΠΈΠ½ ΠΊΠΎΠ½ΡΡΠΎΠ».
Π£ΠΊΡΠ΅ΠΏΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° PHP-FPM
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠ» ΠΊΠ°ΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»
ΠΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ PHP-FPM ΠΏΡΠ»ΠΎΠ²Π΅ ΠΊΠ°ΡΠΎ root ΠΈΠ»ΠΈ ΠΊΠ°ΡΠΎ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» www-data Π·Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π·Π° Π²ΡΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
sudo useradd --system --no-create-home --shell /usr/sbin/nologin myappΠ‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π·Π°Π΄Π°ΠΉΡΠ΅ user = myapp ΠΈ group = myapp Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΡΠ»Π°. Π’ΠΎΠ²Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½ΠΎ PHP ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΡΠΈΡ ΡΡΡΠ²ΡΡ.
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ΅ PHP ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅
Π Π±Π»ΠΎΠΊΠ° php_admin_value Π½Π° ΠΏΡΠ»Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ°Ρ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π² ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_sourceΠΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ΅ Open Basedir
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ° Π½Π° PHP Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ°ΠΌΠΎ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ:
php_admin_value[open_basedir] = /var/www/myapp:/tmpΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Unix ΡΠΎΠΊΠ΅ΡΠΈ ΡΡΡ ΡΡΡΠΎΠ³ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ
TCP ΡΠΎΠΊΠ΅ΡΠΈΡΠ΅ (127.0.0.1:9000) ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΡΡΠ²ΡΡΠ°. Unix ΡΠΎΠΊΠ΅ΡΠΈΡΠ΅ Ρ listen.mode = 0660 ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Ρ Π΄ΠΎΡΡΡΠΏΠ° ΡΠ°ΠΌΠΎ Π΄ΠΎ ΠΏΡΠΈΡΠ΅ΠΆΠ°Π²Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΈ Π³ΡΡΠΏΠ°.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠ»Π½ΠΈΡ ΡΡΠ΅ΠΊ
Π‘Π»Π΅Π΄ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° PHP-FPM ΠΈ Π²Π°ΡΠΈΡ ΡΠ΅Π± ΡΡΡΠ²ΡΡ, ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΡΡΠ»Π°ΡΠ° Π²Π΅ΡΠΈΠ³Π° ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΡΠ½Π΅ΡΠ΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ.
ΠΡΠ΅Π·Π°ΡΠ΅Π΄Π΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΡΠ»ΡΠ³ΠΈ:
sudo systemctl reload php8.2-fpm
sudo systemctl reload nginx
# or
sudo systemctl reload apache2Π’Π΅ΡΡΠ²Π°ΠΉΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° NGINX ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΠ΅Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅:
sudo nginx -tΠ‘ΡΠ·Π΄Π°ΠΉΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ info ΡΠ°ΠΉΠ» (ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ Π³ΠΎ ΡΠ»Π΅Π΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° β ΡΠΎΠΉ ΠΈΠ·Π»Π°Π³Π° ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΡΡΠ²ΡΡΠ°):
echo "<?php phpinfo();" | sudo tee /var/www/myapp/public/phpinfo.phpΠΡΠ²ΠΎΡΠ΅ΡΠ΅ http://example.com/phpinfo.php Π² Π±ΡΠ°ΡΠ·ΡΡ ΠΈ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅ΡΠ΅:
- Server API ΠΏΠΎΠΊΠ°Π·Π²Π°
FPM/FastCGI - PHP Version ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ
- Π‘Π΅ΠΊΡΠΈΡΡΠ° OPcache Π΅ Π½Π°Π»ΠΈΡΠ½Π° ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π°
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ ΡΠ°ΠΉΠ»Π°:
sudo rm /var/www/myapp/public/phpinfo.phpPHP-FPM Π² ΡΡΠ΅Π΄ΠΈ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΠΈΡΠΎΠΊ ΡΡΠ°ΡΠΈΠΊ
ΠΠ° Dedicated ΡΡΡΠ²ΡΡ, Ρ
ΠΎΡΡΠ²Π°Ρ Π΄Π΅ΡΠ΅ΡΠΊΠΈ PHP ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ»ΠΎΠ²Π΅ ΡΡΠ°Π²Π° ΠΎΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΏΡΠ» Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈ pm.max_children, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΏΡΡΠΈΡΠ° Π·Π° Π±Π°Π²Π΅Π½ Π»ΠΎΠ³. ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΡΠ΅ΡΠΏΠ²Π° ΡΠ²ΠΎΡ ΠΏΡΠ» ΠΎΡ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ, Π½Π΅ Π·Π°ΡΡΠ³Π° Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ° ΡΡΠ΅Π½Π°ΡΠΈΠΈ Ρ Π²ΠΈΡΠΎΠΊ ΡΡΠ°ΡΠΈΠΊ, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΠΉΡΠ΅ PHP-FPM Ρ:
- NGINX FastCGI ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ (
fastcgi_cache) Π·Π° ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅ Π½Π° ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ PHP ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ ΠΊΠ°ΡΠΎ ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠΉΠΊΠΈ ΠΈΠ·ΡΡΠ»ΠΎ PHP-FPM Π·Π° ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ - Redis ΠΈΠ»ΠΈ Memcached Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° PHP ΡΠ΅ΡΠΈΠΈ, Π·Π°ΠΌΠ΅Π½ΡΠΉΠΊΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎ-Π±Π°Π·ΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΠ·Π΄Π°Π²Π°Ρ I/O ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΡ ΠΏΡΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅
- Π₯ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ ΡΡΠ΅Π· ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° PHP-FPM Π½Π° ΡΡΡΠ²ΡΡΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π°Π΄ Π±Π°Π»Π°Π½ΡΡΠΎΡ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, Ρ NGINX Π½Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ front-end Π²ΡΠ·Π΅Π»
ΠΠΊΠΎ Π²Π°ΡΠΈΡΡ ΡΡΠ΅ΠΊ Π²ΠΊΠ»ΡΡΠ²Π° SSL ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠ°Π½Π΅, ΡΡΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° PHP-FPM Ρ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π½Π° Π½ΠΈΠ²ΠΎ NGINX Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ TLS ΡΡΠΊΠΎΡΡΠΈΡΠΊΠ°Π½ΠΈΡΡΠ° ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΏΡΠ΅Π΄ΠΈ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π°Ρ PHP-FPM, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΉΠΊΠΈ PHP ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ ΡΠΎΠΊΡΡΠΈΡΠ°Π½ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²ΡΡΡ Ρ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠ° ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΈ PHP Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ β ΠΈΠ·Π²ΠΎΠ΄ Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π· PHP ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½ΠΈΡ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΡΠ°Π½ΡΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ β ΠΎΠ±ΠΌΠΈΡΠ»Π΅ΡΠ΅ GPU Π₯ΠΎΡΡΠΈΠ½Π³, ΠΊΡΠ΄Π΅ΡΠΎ PHP-FPM ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄Π΅Π»Π΅Π³ΠΈΡΠ° ΡΠ΅ΠΆΠΊΠΈΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΊΡΠΌ GPU-ΡΡΠΊΠΎΡΠ΅Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΉΠΊΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΡΠ΅Π± ΡΠ»ΠΎΡ.
ΠΠ»ΡΡΠΎΠ²Π° ΠΌΠ°ΡΡΠΈΡΠ° Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΡΠΏΠΈΡΡΠΊ
ΠΡΠ΅Π΄ΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° PHP-FPM Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ, ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ ΡΠΎΠ·ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΡΠΏΠΈΡΡΠΊ:
ΠΠ·Π±ΠΎΡ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅
pm = dynamicΠ·Π° ΠΎΠ±ΡΠΈ VPS Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ - ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅
pm = staticΡΠ°ΠΌΠΎ Π½Π° dedicated ΡΡΡΠ²ΡΡΠΈ Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈΠΌ, ΠΏΠΎΡΡΠΎΡΠ½Π΅Π½ ΡΡΠ°ΡΠΈΠΊ - ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅
pm = ondemandΡΠ°ΠΌΠΎ Π·Π° ΠΏΡΠ»ΠΎΠ²Π΅ Ρ Π½ΠΈΡΡΠΊ ΡΡΠ°ΡΠΈΠΊ ΠΈΠ»ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
ΠΠ»Π°Π½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅ΡΠ°
- ΠΠ·ΠΌΠ΅ΡΠ΅ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ Ρ
psΠΏΡΠ΅Π΄ΠΈ Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π°pm.max_children - ΠΠ°ΠΏΠ°Π·Π΅ΡΠ΅ ΠΏΠΎΠ½Π΅ 20% ΠΎΡ ΠΎΠ±ΡΠ°ΡΠ° RAM Π·Π° OS, ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ° ΠΈ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ
- ΠΠ°Π΄Π°ΠΉΡΠ΅
pm.max_requestsΠΌΠ΅ΠΆΠ΄Ρ 500β1000 Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ
Π‘ΠΈΠ³ΡΡΠ½ΠΎΡΡ
- ΠΡΠ΅ΠΊΠΈ ΠΏΡΠ» Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΡΠΎ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»
clear_env = yesΠ΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠ»open_basedirΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π΄ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎdisable_functionsΠ±Π»ΠΎΠΊΠΈΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° shell ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ΅ Unix ΡΠΎΠΊΠ΅ΡΠΈ Π²ΠΌΠ΅ΡΡΠΎ TCP ΡΠΎΠΊΠ΅ΡΠΈ
ΠΠ°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡ
pm.status_pathΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ°ΠΌΠΎ ΠΎΡ localhostslowlogΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Ρrequest_slowlog_timeoutΠΎΡ 2β5 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ- Π ΠΎΡΠ°ΡΠΈΡΡΠ° Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π° Π·Π° Π²ΡΠΈΡΠΊΠΈ Π»ΠΎΠ³ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° PHP-FPM
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ
- OPcache Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Ρ
validate_timestamps=0Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° ΡΡΠ΅Π΄Π° - NGINX FastCGI ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΎ Π·Π° ΠΊΠ΅ΡΠΈΡΡΠ΅ΠΌΠΈ endpoints
- PHP ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π½Π° ΡΠ΅ΡΠΈΠΈ Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½ Π½Π° Redis ΠΈΠ»ΠΈ Memcached, Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
ΠΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ
sudo systemctl reload php8.2-fpmΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π±Π΅Π· ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅ (Π½Π΅restart)phpinfo.phpΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π° ΠΎΡ document root Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΡΠ»Π΅Π΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ°- ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΡΠ»Π° Π΅ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ Π·Π°Π΅Π΄Π½ΠΎ Ρ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ
Π§ΠΠ
ΠΠ°ΠΊΠ²Π° Π΅ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ PHP-FPM ΠΈ mod_php?
mod_php Π²Π³ΡΠ°ΠΆΠ΄Π° PHP ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ Apache ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ°ΠΉΠΊΠΈ ΠΏΠ°ΠΌΠ΅Ρ Π΄ΠΎΡΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΡΡΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π²Π°ΠΉΠΊΠΈ PHP Ρ Apache. PHP-FPM ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡΠ΄Π΅Π»Π½Π° ΡΡΠ»ΡΠ³Π°, ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠΈΡΠ° ΡΡΠ΅Π· FastCGI, ΡΠ°Π±ΠΎΡΠΈ Ρ Π²ΡΠ΅ΠΊΠΈ ΡΠ΅Π± ΡΡΡΠ²ΡΡ Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ NGINX ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅.
ΠΠ°ΠΊ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Unix ΡΠΎΠΊΠ΅Ρ ΠΈ TCP ΡΠΎΠΊΠ΅Ρ Π·Π° PHP-FPM?
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Unix ΡΠΎΠΊΠ΅Ρ (listen = /run/php/app-fpm.sock) ΠΊΠΎΠ³Π°ΡΠΎ PHP-FPM ΠΈ ΡΠ΅Π± ΡΡΡΠ²ΡΡΡΡ ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠ° ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°. Unix ΡΠΎΠΊΠ΅ΡΠΈΡΠ΅ Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΡ TCP/IP ΡΡΠ΅ΠΊΠ°, Π½Π°ΠΌΠ°Π»ΡΠ²Π°ΠΉΠΊΠΈ Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΡΠ° ΠΈ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°ΠΉΠΊΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈΡΠ΅ Ρ ΠΏΠΎΡΡΠΎΠ²Π΅. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ TCP ΡΠΎΠΊΠ΅Ρ (listen = 127.0.0.1:9000) ΡΠ°ΠΌΠΎ ΠΊΠΎΠ³Π°ΡΠΎ PHP-FPM ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Ρ
ΠΎΡΡ ΠΎΡ ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ°.
ΠΠ°ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌ Π³ΡΠ΅ΡΠΊΠΈ 502 Bad Gateway ΠΏΡΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅?
ΠΡΠ΅ΡΠΊΠ° 502 ΠΎΡ NGINX, ΡΠΎΡΠ΅ΡΠ° ΠΊΡΠΌ PHP-FPM, ΠΏΠΎΡΡΠΈ Π²ΠΈΠ½Π°Π³ΠΈ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π·Π° ΡΠ»ΡΡΠ°Π½Π΅ Π΅ ΠΏΡΠ»Π½Π° β Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΡΠ° Π·Π°Π΅ΡΠΈ ΠΈ Π½ΠΎΠ²ΠΈ Π²ΡΡΠ·ΠΊΠΈ ΡΠ΅ ΠΎΡΠΊΠ°Π·Π²Π°Ρ. ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ pm.status_path Π·Π° Π½Π΅Π½ΡΠ»Π΅Π²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° listen queue. Π Π΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΈΠ»ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° pm.max_children (Π°ΠΊΠΎ RAM ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°), ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π²Π½ΠΈΡΠ΅ PHP ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ ΡΡΠ΅Π· Π±Π°Π²Π½ΠΈΡ Π»ΠΎΠ³.
ΠΠ°ΠΊ Π΄Π° ΠΏΡΠ΅Π·Π°ΡΠ΅Π΄Ρ PHP-FPM Π±Π΅Π· ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ Π²ΡΡΠ·ΠΊΠΈ?
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ sudo systemctl reload php8.2-fpm Π²ΠΌΠ΅ΡΡΠΎ restart. Π‘ΠΈΠ³Π½Π°Π»ΡΡ reload (SIGUSR2) ΠΊΠ°ΡΠ° Π³Π»Π°Π²Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ Π΄Π° ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΏΠ»Π°Π²Π½ΠΎ: ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ Π·Π°Π²ΡΡΡΠ²Π°Ρ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΏΠΎΠ΅ΠΌΠ°Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. Π’Π²ΡΡΠ΄ΠΎΡΠΎ restart ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΏΡΠ΅ΠΊΡΡΠ²Π°ΠΉΠΊΠΈ ΡΠ΅ΠΊΡΡΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ.
ΠΠΎΠΆΠ΅ Π»ΠΈ PHP-FPM Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ PHP Π²Π΅ΡΡΠΈΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΡΡΡΠ²ΡΡ?
ΠΠ°. ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ PHP Π²Π΅ΡΡΠΈΠΈ (Π½Π°ΠΏΡ. php7.4-fpm ΠΈ php8.2-fpm) ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΉΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠ» Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΡ ΠΏΡΡ Π½Π° ΡΠΎΠΊΠ΅ΡΠ°. Π NGINX Π½Π°ΡΠΎΡΠ΅ΡΠ΅ fastcgi_pass ΠΊΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΡΠΎΠΊΠ΅Ρ Π·Π° Π²ΡΠ΅ΠΊΠΈ server Π±Π»ΠΎΠΊ. Π’ΠΎΠ²Π° Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ ΠΌΠΎΠ΄Π΅Π» Π½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°, ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½Π° ΡΡΠ΅Π· VPS ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ Π½Π° VPS Π₯ΠΎΡΡΠΈΠ½Π³ Ρ root Π΄ΠΎΡΡΡΠΏ.
ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ»ΡΠ³ΠΈ