á€áá±á¬ááºážáá«ážá áááºážááŒááºááá¬ážáá±á¬ áá¬ážááŸááºážááᯠáá°áá áá¯ááºáá±áá²á·áááºá
á¡ááá¯áá»á¯ááºá¡á¬ážááŒáá·áº ááá·áºá¡á¬áž PHP-FPM ááᯠááŒááºáááºážááŸá¯ááᯠááá¯ážááŒáŸáá·áºáááºá latency áá»áŸá±á¬á·áá»áááºááŸáá·áº CPU ááŸáá·áº memory ááᯠááá¯á áááááºáááºáž á¡áá¯á¶ážááŒá¯ááẠPHP-FPM ááᯠáááºááá¯á· á¡áá±á¬ááºážáá¯á¶áž configure áá¯ááºááááºááᯠááŒá±á¬ááŒáá«áááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá PHP-FPM ááŸá PM (áá¯ááºáááºážá ááºáááºáá±áá»á¬) ááá¯ááºážááẠááŒá áºáááºá ááŒá±á¬ááºážáá²áá±áá±á¬ááŒá®ážáá±á¬á· ááá·áºááŸá¬ áá¯á¶áá±á¬ááºáá²á· Memory áááŸááá°ážááá¯ááẠInstall áá¯ááºáá¬á ááá¯áá±á¬ááºážáá«áááºá áááºááá¯á¡á¬ážá¡áá±á«áº. php.net á á¬ááœááºá á¬áááºážá¡áá±á«áºá¡ááŒá±áá¶á ááááºážáá»á¯ááºááŸá¯ááœá±ážáá»ááºá áᬠá áá¯ááᯠááŸáá¯ááºážááŸááºááŒá®áž áá»áœááºá¯ááºá¡ááŸá áºáááºáá¯á¶ážááẠáááºážááá¯á·ááŸáá·áº áááºááá¯á·ááœá¬ááŒá¬ážáááºááᯠááŒáá·áºááŒáá«á áá¯á· áááºááŒáááºáá±á¬ áá¯áááºááŒáá·áºáá¬ážáá±á¬ áá¬ááºá¡ááœá¬ážá¡áá¬á¡ááœáẠááá±
pm = ááœááºáááºáááºá â á¡á±á¬ááºáá±á¬áºááŒáá« ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á ááá±ážáá¯ááºáááºážá
ááºáá»á¬ážá á¡áá±á¡ááœááºá¡á¬áž ááá¯ááºážááá
áºááŒáá·áº ááœá²á·á
ááºážáá¬ážáá«áááºá pm.max_childrená pm.start_serversápm.min_spare_serversá pm.max_spare_servers.
pm = ááá¯á¡ááºááẠ- áá¯ááºáááºážá
ááºáá»á¬ážááᯠááá¯á¡ááºáá»ááºá¡á áááºáá®ážáá¬ážáá«ááẠ(áááºáá±á¬ááºááŸá¯á
áááºááá·áºá¡áá« pm.start_servers ááᯠá
áááºáá±á¬á¡áá«ááœáẠááŒá±á¬ááºážáá²áá±áá±á¬ áááºáá®ážááŸá¯ááŸáá·áº ááá·áºáá»ááºáááºááŒá
áºáááº)á
pm = á¡ááŒááẠ- ááá±ážáá¯ááºáááºážá
ááºá¡áá±á¡ááœááºááᯠáá¯á¶áá±áááºááŸááºáá¬ážááŒá®áž ááá·áºáááºáá»ááºááŒáá·áº ááœáŸááºááŒáá¬ážáááºá pm.max_ááá±ážáá»á¬áž.
á¡áá±ážá
áááºááᯠááŒáá·áºáá«á
PHP-FPM áá¯ááºáááºážá ááºáááºáá±áá»á¬ááŸáá·áº CPU ááŒáááºááŸá¯ááºážááááºážáá»á¯ááºáá°ááŒá¬áž áá°áá®ááŸá¯áá»á¬áž
áááºážááẠááŒááºáá¡ááŒá±á¬ááºážá¡áá¬áá¯áááºááá±á¬áºáááºáž áááºážááᯠPHP-FPM ááœá²á·á ááºážááŸá¯ááá¯ááºáᬠá¡ááŒá±á¬ááºážá¡áá¬ááŸáá·áº áá»áááºáááºááœá¬ážáááºááŒá áºáááºá áááºááºáá±á¬á·á virtual machine ááá¯á·ááá¯áẠáá®ážááŒá¬ážáá¬áá¬ááœáẠáááá¯áááºáá¬ááŸá±ážááœá±ážááŸá¯ á¡áááºážáá¯á¶ážáá áºááŒááẠáááŒá¯á¶áá°ážáá°ááŸá¬ áááºáá°áááºážá CPU ááŒáááºááŸá¯ááºáž á¡ááá¯ááºážá¡áá¬ááᯠááŸááºáááá«ááá¬ážá á€ááœá±ážáá»ááºá áá¬áá»á¬ážá¡ááœáẠáááŸáááá¯ááºáá«áááºá nix ááŸáá·áº Windows ááẠáááá¯áááºáá¬á¡ááá¯ážá¡áá±á«á·áááºáááºááᯠááŒá±á¬ááºážáá²ááŒááºážááŒáá·áº á áá áºá áœááºážáá±á¬ááºáááºááŸáá·áº áá¯á¶á·ááŒááºááŸá¯ááᯠááŒáŸáá·áºáááºááá¯ááºáááºá áááºááá¯á¡á¬ážá¡áá±á«áº á¡áá±á«áº á áœááºážáá±á¬ááºáááº*á áá®áá áºáá«ááŸá¬áá±á¬á· áá±á¬áºááŒáá»ááºááœá±ááᯠááŸáá¯ááºážááŸááºááŒá®áž áá°áá®ááŸá¯ááœá±ááᯠááŒáá·áºááŒáá¡á±á¬ááºá
Governor=ondemand - áááºááŸááááºáá±á«áº áá°áááºá áááá¯áááºáá¬ááŒáááºááŸá¯ááºážá ááá¯ááºážááá
áºá
áá±ážáá»á²á·ááŒááºážá á¡ááŒáá·áºáá¯á¶ážááŒáááºááŸá¯ááºážááá¯á· áá»ááºááŒááºá
áœá¬ áá¯ááºáááºážááŒá®ážáá±á¬áẠááŸá¯ááºááŸá¬ážááŸá¯áááŸáááá·áºáá¬ááá»á¬áž ááá¯ážáá¬áááºááŸáá·áºá¡áá»áŸ áááºážááᯠáá»áŸá±á¬á·áá»áááºá
áááº=ááŸá±ážááá¯ážá
áœá²= áááºááŸááááºáá±á«áºáá°áááºá dynamic frequency scalingá ondemand ááẠááŒáááºááŸá¯ááºážááᯠááá¯ááá¯áá»á±á¬ááœá±á·á
áœá¬ ááá¯ážááŒá®áž áá»áŸá±á¬á·áá»áá«á
á¡á¯ááºáá»á¯ááºáá±ážááŸá°áž = á
áœááºážáá±á¬ááºááẠ- ááŒáááºááŸá¯ááºážááẠá¡ááŒá²áááºáž á¡áá»á¬ážáá¯á¶ážááŒá
áºáááºá
á¡áá±ážá
áááºááᯠááŒáá·áºáá«á
áá°áá®ááŸá¯áá»á¬ážááá¯ááŒáá·áºáá«? á¡áá¯á¶ážááŒá¯ááẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºááŒá±á¬ááºáž ááá·áºá¡á¬áž áá¯á¶ááŒááºá á±ááẠá€ááŸáá¯ááºážááŸááºááŸá¯ááᯠááŒáááá¯áá«áááºá ááá±áá±ážáááºáž PHP-FPM á¡ááœááº
áááá¯áááºáá¬á¡ááœáẠááááºážááŸáááŸá¯ ááá·áºáááºáá»áẠá
áœááºážáá±á¬ááºááẠáá¬áá¬á CPU ááá·áºáááºáá»ááºáá±á«áºááœáẠáá¯á¶ážááá®ážáá«ážáá°áááºáá±á¬ááŒá±á¬áá·áº á
áœááºážáá±á¬ááºáááºááᯠáá¯á¶ááŒá¯á¶á
áœá¬ ááá¯ážááŒáŸáá·áºááẠáá°áá®áá±ážáááºá áááºážá¡ááŒááºá á¡áá°áá»áááºá áááºááá®á¡á¬áž (áááºááºáá±á¬á·áá
áºáá¯á¶ážááœááº) ááŸáá·áº áááá¯áááºáá¬ááᯠ100% á¡áááºáááŒááºáááºáááºááŒááºážá á¡ááŒá¬ážáá±ážááœááºááá¯ážáá»áá¯ážáá»á¬ážáá²á·ááá¯á·áá±á¬ á¡áá»ááºáá»á¬ážáááºáž ááŸááá«áááºá á
áœááºážáá±á¬ááºááẠáááºáááºááẠá¡ááŒááºáá¯á¶áž áááá¯áááºáᬠá
áœááºážáá±á¬ááºáááºááᯠáá±áá»á¬á
á±áááºá á¥ááá¬á á¡ááŒá±á¬ááºážáááºáá«á
áá¬áá¬á áœááºážáá±á¬ááºáááºá¡ááŒáá·áºáá¯á¶ážáááŸáááẠpm static ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážá
PHP-FPM ááœá±ážáá»ááºááŸá¯ ááá±áá±ážáááºáž áá¬áá¬áá±á«áºááŸá á¡ááá²á·ááŸááºáá¬ááºáá±á«áºááœáẠáá»á¬ážá áœá¬áá°áááºáá«áááºá Memory áááºážááẠááœá±ážáᬠááá¯áá±á¬ááºážáá«áááºá áááºááá¯á¡á¬ážá¡áá±á«áº ááá¯á·ááá¯áẠááŒá±á¬ááºážáá²áá±áá±á¬. á¡ááŒá¬ážáá áºáááºááœááºá ááá·áºááœáẠmemory ááŸááá«á pm ááá¯áááºááŸááºááŒááºážááŒáá·áº PHP process manager overhead ááá¯ááŸá±á¬ááºááŸá¬ážááá¯ááºáááºá áááºááŒáááºáá±á¬ á¡ááŒáá·áºáá¯á¶ážáá¬áᬠá áœááºážáááºá¡ááá áá áºáááºážááá¯ááá±á¬áº á¡áá¬áá¬ááá¯ááºážááᯠáá±á¬ááºážááœááºá áœá¬ ááœááºáá»ááºáá¬ážááẠááá¯á¡ááºáá«áááºá pm.static áá¯ááºáá±á¬ááºááá¯ááºáá±á¬ PHP-FPM áá¯ááºáááºážá ááºáá»á¬ážá á¡ááŒáá·áºáá¯á¶ážááá¬áá¡ááá ááŸááºáá¬ááºáááºážáá±á¬ ááá¯á·ááá¯áẠáááºááŸáºááŒá¿áá¬áá»á¬áž ááááºáá®ážáá²á ááá¯á·áá±á¬áº áááºážááẠáááá¯áááºáá¬áá»á¬ážááᯠááœáŸááºážááá¯ážááŒá®áž áá¯ááºáá±á¬ááºáááºá á±á¬áá·áºááá¯ááºážáá±ááá·áº PHP-FPM áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá áœá¬ááᯠá á¯áá±á¬ááºážáá¬ážáá±á¬ááŒá±á¬áá·áº ááŒáá·áºáá¬ážáááºááá¯ááºáá±á.
á¡áááºáá±á¬áºááŒáá« screenshot ááœááºá áá¬áá¬ááœááºááŸááááºá pm = static ááŸáá·áº pm.max_children = 100áááºážááẠáááŸáááá¯ááºáá±á¬ 10 á¡áááºá០32 GB ááá·áºá¡áá áá±áá¬áá°áááºá áá®ážáá±á¬ááºážááá¯ážáá¬ážááá·áº áá±á¬áºáá¶áá»á¬ážááᯠá¡á¬áá¯á¶á áá¯ááºáá«á á¡áá¬á¡á¬ážáá¯á¶ážááẠá€áá±áá¬ááœáẠááŸááºážáá«áááºá á€áááºáá¬ážááŒááºáá¬ááºáá¯á¶ááœáẠGoogle Analytics ááœáẠá¡áá¯á¶ážááŒá¯áá° ááá ááá·áº (á áá¹ááá·áº 200 áá»á±á¬áº) ááŸááá²á·áááºá á€á¡ááá·áºááœááºá ááá·áºááŸááºážááŒá±á¡á¬ážááŒáá·áº PHP-FPM ááá±ážáá¯ááºáááºážá ááºáá»á¬ážá 60% ááẠá¡áá¯ááºááá¯ááºáá±ážáá«á ááá¯ááá¯áááºááŸá¬ PHP-FPM ááẠáááºááŸáá¡ááœá¬ážá¡áá¬ááŸáá·áºááááºááá¯ááºáá² áá¬áá¬áááºážááŒá áºáá»á¬ážá á¡áá»á¬ážáá¯á¶ážááá¬áááá¯á· á¡ááŒá²áááºážáááºááŸááºáá¬ážáááºá áááºáá¬ážáá¬ážáá±á¬ áá¯ááºáááºážá ááºááẠáá¬ááºá¡ááœá¬ážá¡áᬠá¡ááœááºá¡ááááºááᯠá á±á¬áá·áºááŒá®áž áá»ááºáá»ááºážáá¯á¶á·ááŒááºáááºá áááºá¡ááá á±á¬áá·áºá áá¬áááá¯áá«á pm ááá±ážáá¯ááºáááºážá ááºáá»á¬ážááᯠáááºáá®ážááŒá®áž áááºáááºážáá¯ááºáá¯á¶ážááá·áºá¡áá« áááºážááá¯á·ááᯠáááºááá¯ááºážáááºááŒá áºáááºá pm.process_idle_timeout. áááºâááá¯ážá¡áááºážááŒáá·áºâáááºâ pm.max_áá±á¬ááºážááá¯áá»ááºáá»á¬ážá¡áááºááŒá±á¬áá·áºááá¯áá±á¬áºáááºážááẠPHP ááœáẠmemory áá±á«ááºááŒá¬ážááŒááºážáááŸááá±á¬á¡áá¯ááºáá¯ááºáá±á¬áá¬áá¬ááŒá áºáááºá áááºáááºááá¯ááºáááºá pm.max_requests = 0 áááºááŸáááŸáá·áº á¡áá¬ááẠPHP script áá»á¬ážááᯠááẠáá¯á¶ážááá¯á¶ááŒááºáá«á static ááŸáá·áºá áá«áá±ááá·áº á¡áá»áááºááŒá¬áá¬áá¬áá²á·á¡áá»áŸ áá¬ááºááœáŸááºážááœá±ááᯠááŒááºááœáá·áºáá¬á ááá¯áá±á¬ááºážáá«áááºá áááá¯á¡ááºáá±á¬ ááá±áá¯ááºáá»á ááááºáá»á¬ážááᯠááŸá±á¬ááºááŸá¬ážááá¯áá±á¬ááŒá±á¬áá·áº áá±á¬ááºážááá¯ááŸá¯á¡áá»á¬ážá¡ááŒá¬ážááᯠáááºááŸááºáá«á á¥ááᬠá¡áááºážáá¯á¶áž pm.max_requests = 1000 - ááá¬ááá±á«áº áá°ááẠpm.max_ááá±ážáá»á¬áž ááŸáá·áº áá áºá áá¹ááá·áºáá»áŸáẠáá±á¬ááºážááá¯ááŸá¯á¡áá±á¡ááœááºá
screenshot ááẠcommand ááá¯ááŒááááºá
top -bn1 | grep php-fpm
pm ondemand áá²á· 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 ááŒá±á¬ááºážáá²áá±áá±á¬ á¡áá°ážáááŒáá·áº áááºááá¯á¡á¬ážá¡áá±á«áº ááá·áºááœáẠPHP-FPM áá±áá°ážáááºáá»á¬ážá áœá¬ááŸááá»áŸáẠá¡áááºááŒá±ááá¯ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠááá°áá®áá±á¬ á¡á á¯á¡áá±ážáá»á¬ážááœáẠcPanel á¡áá±á¬áá·áºáá»á¬ážá áœá¬ ááá¯á·ááá¯áẠáááºááá¯ááºáá»á¬ážá áœá¬ááᯠáááºáá¶áá±á¬ááºááœááºáá±ážáááºá áá»áœááºá¯ááºááœáẠ100+ cpanel á¡áá±á¬áá·áºáá»á¬ážááŸáá·áº ááá¯ááááºáž 200 ááá·áºááŸááá±á¬ áá¬áá¬áá áºáá¯ááŸáááŒá®áž pm.static ááá¯á·ááá¯áẠdynamic ááẠáá»áœááºá¯ááºááᯠáááºáááºáááºááá¯ááºáá«á áááºááá¯á¡ááºááá»áŸáááºá€ááœááºááŒá áºáááºá áááºááá¯á¡á¬ážá¡áá±á«áºááŒá®ážáá±á¬ááºá áááºááá¯ááºáá»á¬ážá áá¯á¶ážáá¯á¶ááŸá áºáá¯á¶áá»á±á¬áºááẠá¡ááœá¬ážá¡áᬠá¡áááºážááẠááá¯á·ááá¯áẠáá¯á¶ážááááŸááá²á áááºááá¯á¡á¬ážá¡áá±á«áº ááá±ážáá¯ááºáááºážá ááºá¡á¬ážáá¯á¶áž áá»ááºááœá¬ážáááºááŒá áºááŒá®ážá áááºážááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž ááŸááºáá¬ááºáá»á¬ážá áœá¬ áááºáá¬á á±áááºááŒá áºáááºá áá¶áá±á¬ááºážáá±á¬ááºáá áœá¬á cPanel developer áá»á¬ážááẠáááºážááᯠáááááŒá¯ááááŒá®áž áááºááá¯ážááᯠáá¯á¶áá±áááºááŸááºáá¬ážáááºá áááºááá¯á¡á¬ážá¡áá±á«áº. á¡áááºá áá¯á¶áá±ááŒá áºáá²á·áááºá ááŒá±á¬ááºážáá²áá±áá±á¬PHP-FPM ááẠá¡áá¯ááºáá»á¬ážáá±á¬ áá»áŸáá±áá¬ážáá±á¬ áá¬áá¬áá»á¬ážá¡ááœáẠáá¯á¶ážá áááá·áºáá»á±á¬áºáá«á áá±á¬áºáá±á¬áºáá»á¬ážáá»á¬áž áá¯á¶ážáá°ážáááºá suPHPááá±ááá¯áá±á¬á· ááŒá±á¬ááºážáá²áá±áá±á¬ idle pool áá»á¬ážááŸáá·áº cPanel PHP-FPM á¡áá±á¬áá·áºáá»á¬ážááŒáá·áºááẠáááºááá¯áá®ááᯠáá¯á¶ážá áœá²áá¬ážáááºá á¡ááœá¬ážá¡áá¬áá±á¬ááºážáá«áá PHP-FPM pools á¡áá»á¬ážá¡ááŒá¬áž (shared hosting) ááŒáá·áº ááá·áºá¡á¬áž áá¬áá¬ááœáẠáááºáá¶áá»ááºážááááºááá¯ááºáá«á
áá±á¬ááºáá»ááº
á¡áááºá áááºááẠPHP-FPM ááá¯á¡áá¯á¶ážááŒá¯áá±ááŒá®áž áááºáá¡ááœá¬ážá¡áᬠáá»á¬ážááŒá¬ážáá«áá áá¯ááºáááºážá ááºáááºáá±áá»á¬áá»á¬áž áááºááá¯á¡á¬ážá¡áá±á«áº О ááŒá±á¬ááºážáá²áá±áá±á¬ PHP-FPM ááẠáááºážááá¯á·á ááœá±ážáá¬áá« á¡áá»á¯á¶ážáááºááŸá¯ááŒá±á¬áá·áº ááá·áºáááºáá»ááºááŸááááºááŒá áºáááºá áááºáá áá áºá¡á¬áž áá¬ážáááºááŒá®áž á¡ááŒáá·áºáá¯á¶ážáá¬áá¬á áœááºážáááºá¡ááá¯áẠPHP-FPM áá¯ááºáááºážá ááºáá»á¬ážááᯠá á®á ááºáááºááŸááºáá«á áááá¡á á¯á¶ pm.max_ááá±ážáá»á¬áž á¡áá»á¬ážáá¯á¶ážááá±á¡áá¯á¶ážááŒá¯ááŸá¯áá±á«áº áá°ááẠááŒá±á¬ááºážáá²áá±áá±á¬ ááá¯á·ááá¯áẠáááºááá¯á¡á¬ážá¡áá±á«áºááŒá®ážáá»áŸáẠá€áááºááá¯ážááᯠáááºááá¯áá®ááŸáá·áº áááá¯áááºáá¬ááẠáááºááá¯ááá»áá² á¡áá¯ááºáá¯ááºááá·áºá¡ááá·áºááá¯á· ááá¯ážáá«á á¡á²áá«ááᯠáááºááááá¬ážáááá«áááá·áºáááºá ááá±áá±ážáááºážááá·áºááœáẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠáááºááá¯áá®ááœááºááŸááá±á¬ááŒá±á¬áá·áºá á¡ááœá¬ážá¡áᬠspikes áá»á¬ážááẠá¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸ CPU spikes áááºážáá«ážáá¬áááºááŒá áºááŒá®áž server ááŸáá·áº CPU load áá»á¬áž áá»ááºážáá»áŸááœááºááŸááá¬áááºááŒá áºáááºá áá»ááºážáá»áŸ PHP-FPM áá¯ááºáááºážá ááºá¡ááœááºá¡á á¬ážááẠáááºáá¬áá¬áá±á«áºááœááºáá°áááºááŒá®áž manual configuration ááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº ááá¯ááá¯á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááá·áº áááºáá±áá»á¬áá»á¬ážáááºá ááŒá±á¬ááºážáá²áá±áá±á¬ О áááºááá¯á¡á¬ážá¡áá±á«áº - ááá¯áá¬áááºááŒá®ážáááºá áá±á¬ááºážáá«ážá á¡áá¯á¶ážáááºáááºááá¯á· áá»áŸá±á¬áºááá·áºáá«áááºá
DUP á
á¶ááŒááá¬ážááᯠááá·áºááœááºážáá¬ážáááºá
source: www.habr.com