ΠΠ΅ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΡΠ°ΡΡΠΈ Π±ΡΠ»Π° ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Π½Π°
Π― Π² Π΄Π²ΡΡ ΡΠ»ΠΎΠ²Π°Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ PHP-FPM, ΡΡΠΎΠ±Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ, ΡΠ½ΠΈΠ·ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΏΠ°ΠΌΡΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΡΠΎΠΊΠ° PM (process manager, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²) Π² PHP-FPM ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ dynamic, Π° Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΎ Π»ΡΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ondemand. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΡΠ°Π²Π½ΠΈΠΌ 2 Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ php.net ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΠ΅ΠΌ ΠΎΡ Π½ΠΈΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΌΠΎΠΉ Π»ΡΠ±ΠΈΠΌΡΠΉ static pm Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΡΡΠ°ΡΠΈΠΊΠ°:
pm = dynamic β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²: pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
pm = ondemand β ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° pm.start_servers Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ°).
pm = static β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ pm.max_children.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΌ. Π²
Π‘Ρ ΠΎΠ΄ΡΡΠ²Π° ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ° PHP-FPM Ρ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠΎΠΌ ΡΠ°ΡΡΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡΡΡΠΎΠΏΠΎΠΌ, Π½ΠΎ Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΡΠ²ΡΠ·Π°ΡΡ ΡΡΠΎ Ρ ΡΠ΅ΠΌΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ PHP-FPM. Π£ ΠΊΠΎΠ³ΠΎ Ρ ΠΎΡΡ ΡΠ°Π· Π½Π΅ ΡΠΎΡΠΌΠΎΠ·ΠΈΠ» ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ β Π½Π° Π½ΠΎΡΡΠ±ΡΠΊΠ΅, Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈΠ»ΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΠΎΠΌΠ½ΠΈΡΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°? ΠΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π»Ρ nix ΠΈ Windows, ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ, Π΅ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Ρ ondemand Π½Π° performance*. ΠΠ° ΡΡΠΎΡ ΡΠ°Π· Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΡΠ°Π²Π½ΠΈΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡ ΠΎΠ΄ΡΡΠ²Π°:
Governor = ondemand β Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ. Π Π΅Π·ΠΊΠΎ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΠΎΡΡ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π΅Π΅, ΠΊΠΎΠ³Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄Ρ ΠΏΡΠΎΡΡΠΎΡ.
Governor = conservative = Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΎΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ. Π£Π²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ°ΡΡΠΎΡΡ ΠΏΠ»Π°Π²Π½Π΅Π΅, ΡΠ΅ΠΌ ondemand.
Governor = performance β ΡΠ°ΡΡΠΎΡΠ° Π²ΡΠ΅Π³Π΄Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΌ. Π²
ΠΠΈΠ΄ΠΈΡΠ΅ ΡΡ ΠΎΠ΄ΡΡΠ²ΠΎ? Π― Ρ ΠΎΡΠ΅Π» ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΡΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡ Π²Π°Ρ, ΡΡΠΎ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ pm static Π΄Π»Ρ PHP-FPM.
ΠΠ»Ρ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ performance ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½Π° ΠΏΠΎΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π»ΠΈΠΌΠΈΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅ΡΡΡ Π΅ΡΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΊΡΠΎΡΡ, ΠΊΠ°ΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ°, Π·Π°ΡΡΠ΄ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΠ° (Π² Π½ΠΎΡΡΠ±ΡΠΊΠ΅) ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π½Π° 100%. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° performance ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΌΡΡ Π±ΡΡΡΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΠΎΡΠΈΡΠ°ΠΉΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ pm static Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ PHP-FPM pm static Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΡΠ»ΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠ°Π»ΠΎ, Π»ΡΡΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ondemand ΠΈΠ»ΠΈ dynamic. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π»ΠΈΡΠ½ΠΈΡ ΠΈΠ·Π΄Π΅ΡΠΆΠ΅ΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ° PHP, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² pm static Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π΅ΠΌΠΊΠΎΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°ΡΡ, Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ pm.static Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² PHP-FPM, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π½Π΅Ρ Π²Π°ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ ΠΊΡΡΠ°. ΠΠΎ Π½Π΅ ΡΠ°ΠΊ Π²ΡΡΠΎΠΊΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΈ Π½Π°ΠΊΠΎΠΏΠΈΡΡ ΠΊΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ PHP-FPM, ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ Π²ΡΡΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ pm = static ΠΈ pm.max_children = 100, ΠΈ ΡΡΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 10 ΠΠ ΠΈΠ· ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ 32. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ, ΡΡΡ ΠΈ ΡΠ°ΠΊ Π²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. ΠΠ° ΡΡΠΎΠΌ ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 200 Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (Π±ΠΎΠ»Π΅Π΅ 60 ΡΠ΅ΠΊΡΠ½Π΄) Π² Google Analytics. ΠΠ° ΡΡΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 70% Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² PHP-FPM Π²ΡΠ΅ Π΅ΡΠ΅ Π±Π΅Π·Π΄Π΅ΠΉΡΡΠ²ΡΡΡ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ PHP-FPM Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°. ΠΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΆΠ΄Π΅Ρ ΠΏΠΈΠΊΠΎΠ² ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ. ΠΠ°ΠΌ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΆΠ΄Π°ΡΡ, ΠΏΠΎΠΊΠ° pm ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, Π° ΠΏΠΎΡΠΎΠΌ Π·Π°Π²Π΅ΡΡΠΈΡ ΠΈΡ , ΠΊΠΎΠ³Π΄Π° ΠΈΡΡΠ΅ΡΠ΅Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ pm.process_idle_timeout. Π― ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ pm.max_requests, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π±Π΅Π· ΡΡΠ΅ΡΠ΅ΠΊ ΠΏΠ°ΠΌΡΡΠΈ Π² PHP. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ pm.max_requests = 0 ΡΠΎ static, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Ρ Π² ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ ΠΈ Π±ΡΠ΄ΡΡΠΈΡ ΡΠΊΡΠΈΠΏΡΠ°Ρ PHP. ΠΠΎ Π»ΡΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΊΡΠΈΠΏΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π²Π΅Π΄Ρ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π»ΠΈΡΠ½ΠΈΡ ΠΈΠ·Π΄Π΅ΡΠΆΠ΅ΠΊ pm. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΎΡΡ Π±Ρ pm.max_requests = 1000 β Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° pm.max_children ΠΈ ΡΠΈΡΠ»Π° Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ.
ΠΠ° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°
top -bn1 | grep php-fpm
ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ pm ondemand ΠΈ dynamic
ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ pm dynamic, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ:
WARNING: [pool xxxx] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4 idle, and 59 total children
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΎΡΠΈΠ±ΠΊΠ° Π½ΠΈΠΊΡΠ΄Π° Π½Π΅ Π΄Π΅Π½Π΅ΡΡΡ, ΠΊΠ°ΠΊ
PM dynamic ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ondemand ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ»ΠΎΠ² PHP-FPM. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠ² cPanel ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² Π² ΡΠ°Π·Π½ΡΡ ΠΏΡΠ»Π°Ρ . Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ΅ΡΠ²Π΅Ρ, Π³Π΄Π΅, Π΄ΠΎΠΏΡΡΡΠΈΠΌ, 100+ Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠ² cpanel ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 200 Π΄ΠΎΠΌΠ΅Π½ΠΎΠ², ΠΈ pm.static ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ dynamic ΠΌΠ΅Π½Ρ Π±Ρ Π½Π΅ ΡΠΏΠ°Ρ. Π’ΡΡ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ondemand, Π²Π΅Π΄Ρ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π²ΡΡ ΡΡΠ΅ΡΠ΅ΠΉ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΌΠ°Π»ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ, Π° Ρ ondemand Π²ΡΠ΅ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΎΡΠ²Π°Π»ΡΡΡΡ, ΡΡΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π½Π°ΠΌ ΡΠΉΠΌΡ ΠΏΠ°ΠΌΡΡΠΈ! Π ΡΡΠ°ΡΡΡΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ cPanel ΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ondemand. Π Π°Π½ΡΡΠ΅, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ» dynamic, PHP-FPM Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΠ» Π΄Π»Ρ Π½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ suPHP, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ pm dynamic ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ» ΠΏΠ°ΠΌΡΡΡ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ Π±Π΅Π·Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΠ»Π°Ρ ΠΈ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°Ρ cPanel PHP-FPM. Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠΈ Ρ ΠΎΡΠΎΡΠ΅ΠΌ ΡΡΠ°ΡΠΈΠΊΠ΅ Π²Ρ Π½Π΅ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΏΡΠ»ΠΎΠ² PHP-FPM (ΠΎΠ±ΡΠΈΠΉ Ρ ΠΎΡΡΠΈΠ½Π³).
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ PHP-FPM ΠΈ ΡΡΠ°ΡΠΈΠΊ Ρ Π²Π°Ρ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠΉ, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ondemand ΠΈ dynamic Π΄Π»Ρ PHP-FPM Π±ΡΠ΄ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΈΠ·-Π·Π° ΠΏΡΠΈΡΡΡΠΈΡ ΠΈΠΌ ΠΈΠ·Π΄Π΅ΡΠΆΠ΅ΠΊ. ΠΠ·ΡΡΠΈΡΠ΅ ΡΠ²ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ PHP-FPM Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΅ΠΌΠΊΠΎΡΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°. Π‘Π½Π°ΡΠ°Π»Π° Π·Π°Π΄Π°ΠΉΡΠ΅ pm.max_children Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ pm dynamic ΠΈΠ»ΠΈ ondemand, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ²Π΅Π»ΠΈΡΡΡΠ΅ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎ ΡΡΠΎΠ²Π½Ρ, Π³Π΄Π΅ ΠΏΠ°ΠΌΡΡΡ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· ΡΡΠ΅Π·ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ. ΠΡ Π·Π°ΠΌΠ΅ΡΠΈΡΠ΅, ΡΡΠΎ Ρ pm static, ΡΠ°Π· Ρ Π²Π°Ρ Π²ΡΠ΅ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΈΠΊΠΈ ΡΡΠ°ΡΠΈΠΊΠ° ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π±ΡΠ΄ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠΈΠΊΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π° ΡΡΠ΅Π΄Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π²ΡΡΠΎΠ²Π½ΡΡΡΡΡ. Π‘ΡΠ΅Π΄Π½ΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° PHP-FPM Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΡΡΡΠ½ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΠΎΠ»Π΅Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² β dynamic ΠΈ ondemand β Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Ρ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠ°ΡΡΡ Π±ΡΠ»Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ.
UPD ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠ°
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com