ãã®èšäºã®æªç·šéããŒãžã§ã³ã¯æåã«å
¬éãããŸãã
ã¹ã«ãŒããããåäžãããã¬ã€ãã³ã·ãççž®ããCPU ãšã¡ã¢ãªãããå®å®ããŠäœ¿çšããããã« PHP-FPM ãæ§æããæé©ãªæ¹æ³ãç°¡åã«èª¬æããŸãã ããã©ã«ãã§ã¯ãPHP-FPM ã® PM (ããã»ã¹ ãããŒãžã£ãŒ) è¡ã¯æ¬¡ã®ãšããã§ãã ãã€ãããã¯ãã¡ã¢ãªã足ããªãå Žåã¯ãã€ã³ã¹ããŒã«ããããšããå§ãããŸãã ãªã³ããã³ãã php.net ããã¥ã¡ã³ãã«åºã¥ã㊠2 ã€ã®ã³ã³ãããŒã« ãªãã·ã§ã³ãæ¯èŒããç§ã®ãæ°ã«å ¥ããããããšã©ã®ããã«ç°ãªãããèŠãŠã¿ãŸãããã éç㪠倧éãã©ãã£ãã¯ã®å Žåã¯ååŸ:
ååŸ = ãã€ããã㯠â åããã»ã¹ã®æ°ã¯ã次ã®ãã£ã¬ã¯ãã£ãã«åºã¥ããŠåçã«æ§æãããŸãã pm.max_childrenãpm.start_serversãpm.min_spare_serversãpm.max_spare_servers.
ååŸ = ãªã³ããã³ã - ããã»ã¹ã¯ãªã³ããã³ãã§äœæãããŸã (ãµãŒãã¹ã®éå§æã« pm.start_servers ãèµ·åãããåçäœæãšã¯å¯Ÿç
§çã§ã)ã
ååŸ = éç â åããã»ã¹ã®æ°ã¯åºå®ãããŠããããã©ã¡ãŒã¿ã«ãã£ãŠç€ºãããŸãã pm.max_children.
詳现ã«ã€ããŠã¯ããåç
§ããŠãã ããã
PHP-FPM ããã»ã¹ ãããŒãžã£ãŒãš CPU åšæ³¢æ°ã³ã³ãããŒã©ãŒã®é¡äŒŒç¹
ããã¯äž»é¡ããå€ããŠããããã«æãããããããŸããããããã PHP-FPM æ§æã®ãããã¯ã«ãªã³ã¯ããŸãã ã©ããããããä»®æ³ãã·ã³ãå°çšãµãŒããŒãªã©ã§ãããã»ããµã®é床äœäžãå°ãªããšãäžåºŠã¯çµéšããããšã®ãªã人ã¯ããã§ãããã? CPU åšæ³¢æ°ã®ã¹ã±ãŒãªã³ã°ãèŠããŠããŸãã? ãããã®ãªãã·ã§ã³ã¯æ¬¡ã®ç®çã§äœ¿çšã§ããŸãã nix ãš Windows ã§ã¯ãããã»ããµãŒã®ã¹ãããã«èšå®ãå€æŽããããšã§ãã·ã¹ãã ã®ããã©ãŒãã³ã¹ãšå¿çæ§ãåäžãããããšãã§ããŸãã ãªã³ããã³ã Ма ããã©ãŒãã³ã¹*ã ä»åã¯ã説æãæ¯èŒããŠé¡äŒŒç¹ãèŠãŠã¿ãŸãããã
ã¬ãããŒ=ãªã³ããã³ã â çŸåšã®è² è·ã«å¿ããŠããã»ããµåšæ³¢æ°ãåçã«ã¹ã±ãŒãªã³ã°ããŸãã æ倧åšæ³¢æ°ãŸã§æ¥éã«äžæããéã¢ã¯ãã£ããªæéãé·ããªããšåšæ³¢æ°ãäžããŸãã
ç¥äº=ä¿å®æŽŸ= çŸåšã®è² è·ã«å¿ããåçãªåšæ³¢æ°ã¹ã±ãŒãªã³ã°ã ãªã³ããã³ããããã¹ã ãŒãºã«åšæ³¢æ°ãå¢æžããŸãã
ã¬ãããŒïŒããã©ãŒãã³ã¹ â åšæ³¢æ°ã¯åžžã«æ倧ã§ãã
詳现ã«ã€ããŠã¯ããåç
§ããŠãã ããã
é¡äŒŒç¹ãããããŸãã? ã䜿çšããã®ãæåã§ããããšãçŽåŸããŠããã ãããã«ããã®æ¯èŒã瀺ãããã£ãã®ã§ãã ååŸéç PHP-FPMã®å Žåã
ããã»ããµãŒã¬ã®ã¥ã¬ãŒã¿ãŒãã©ã¡ãŒã¿ãŒã®å Žå ããã©ãŒãã³ã¹ ã»ãŒå®å
šã«ãµãŒããŒã® CPU å¶éã«äŸåãããããããã©ãŒãã³ã¹ãå®å
šã«åäžãããã®ã«åœ¹ç«ã¡ãŸãã ãã¡ãããããã«å ããŠã枩床ãããããªãŒå
é» (ã©ãããããã®)ãããã»ããµãŒãåžžã« 100% ã§å®è¡ããããšã«ãããã®ä»ã®å¯äœçšãªã©ã®èŠå ããããŸãã ããã©ãŒãã³ã¹èšå®ã«ãããæéã®ããã»ããµ ããã©ãŒãã³ã¹ãä¿èšŒãããŸãã ããšãã°ã次ã®ããšãèªãã§ãã ããã
pm static ã䜿çšããŠãµãŒããŒã®ããã©ãŒãã³ã¹ãæ倧åãã
PHP-FPM ãªãã·ã§ã³ ååŸéç ãµãŒããŒã®ç©ºãã¡ã¢ãªã«å€§ããäŸåããŸãã ã¡ã¢ãªãå°ãªãå Žåã¯éžæããããšããå§ãããŸã ãªã³ããã³ã ãŸã㯠ãã€ãããã¯ã äžæ¹ãã¡ã¢ãªãããå Žåã¯ãpm ãèšå®ããããšã§ PHP ããã»ã¹ ãããŒãžã£ãŒã®ãªãŒããŒããããåé¿ã§ããŸãã éç㪠ãµãŒããŒã®æ倧容éãŸã§ã èšãæããã°ããã¹ãŠãããŸãèšç®ãããŠããã°ã次ã®ããšã確ç«ããå¿ èŠããããŸãã pm.static å®è¡å¯èœãª PHP-FPM ããã»ã¹ã®æ倧éãŸã§ã ã¡ã¢ãªäžè¶³ããã£ãã·ã¥äžè¶³ã«ããåé¡ãåŒãèµ·ããããšãªãã ãã ããããã»ããµãŒãå§åããå®è¡ãåŸ æ©ããŠããå€æ°ã® PHP-FPM æäœãèç©ãããã»ã©é«ãã¯ãããŸããã.
äžã®ã¹ã¯ãªãŒã³ã·ã§ããã§ã¯ããµãŒããŒã«ã¯ pm = éçãããã³ pm.max_children = 100ã§ãããã¯äœ¿çšå¯èœãª 10 GB ã®ãã¡çŽ 32 GB ãå ããŸãã匷調衚瀺ãããåã«æ³šç®ããŠãã ãããããã§ã¯ãã¹ãŠãæ確ã§ãã ãã®ã¹ã¯ãªãŒã³ã·ã§ããã§ã¯ãGoogle Analytics ã«çŽ 200 人ã®ã¢ã¯ãã£ã ãŠãŒã¶ãŒ (60 ç§ä»¥äž) ãå«ãŸããŠããŸãã ãã®ã¬ãã«ã§ã¯ãPHP-FPM åããã»ã¹ã®çŽ 70% ããŸã ã¢ã€ãã«ç¶æ ã§ãã ããã¯ãçŸåšã®ãã©ãã£ãã¯ã«é¢ä¿ãªããPHP-FPM ãåžžã«ãµãŒã㌠ãªãœãŒã¹ã®æ倧éã«èšå®ãããããšãæå³ããŸãã ã¢ã€ãã«ç¶æ ã®ããã»ã¹ã¯ãã©ãã£ãã¯ã®ããŒã¯ãåŸ ã¡ãå³åº§ã«å¿çããŸãã ãŸã§åŸ ã€å¿ èŠã¯ãããŸãã pm åããã»ã¹ãäœæããæéãçµéãããšåããã»ã¹ãçµäºããŸã pm.process_idle_timeoutã å€ãéåžžã«é«ãèšå®ããŸãã pm.max_requestsããã¯ãPHP ã§ã®ã¡ã¢ãª ãªãŒã¯ã®ãªãæ£åžžã«åäœããŠãããµãŒããŒã§ããããã§ãã ã€ã³ã¹ããŒã«ã§ããŸã pm.max_requests = 0 æ¢åããã³å°æ¥ã® PHP ã¹ã¯ãªããã«å®å šãªèªä¿¡ãããå Žåã¯ãéçã䜿çšããŠãã ããã ãã ããæéããããŠã¹ã¯ãªãããåå®è¡ããããšããå§ãããŸãã äžå¿ èŠãª PM ã³ã¹ããé¿ãããããããªã¯ãšã¹ãã®æ°ãå€ãèšå®ããŸãã ããšãã°ãå°ãªããšã pm.max_requests = 1000 - æ°éã«å¿ã㊠pm.max_children ããã³ XNUMX ç§ãããã®ãªã¯ãšã¹ãæ°ã
ã¹ã¯ãªãŒã³ã·ã§ããã¯ã³ãã³ãã瀺ããŠããŸã
top -bn1 | grep php-fpm
pm ãªã³ããã³ããšãã€ãããã¯ããã€äœ¿çšããã
ååŸããå©çšã®å Žå ãã€ãããã¯ã次ã®ãããªãšã©ãŒãçºçããŸãã
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 ã¢ã«ãŠã³ããŸãã¯è€æ°ã® Web ãµã€ããç°ãªãããŒã«ã§ãã¹ããããšããŸãã ããšãã°ã100 å以äžã® cpanel ã¢ã«ãŠã³ããšçŽ 200 åã®ãã¡ã€ã³ãæã€ãµãŒããŒããããŸãããpm.static ãåçã§ãããç§ãæãããšã¯ã§ããŸããã ããã§å¿ èŠãªã®ã¯ ãªã³ããã³ãçµå±ã®ãšãããWeb ãµã€ãã® XNUMX åã® XNUMX 以äžã¯ãã©ãã£ãã¯ãã»ãšãã©ããŸãã¯ãŸã£ããåãåã£ãŠããŸããã ãªã³ããã³ã ãã¹ãŠã®åããã»ã¹ãåé€ããããããã¡ã¢ãªãå€§å¹ ã«ç¯çŽãããŸãã 幞ããªããšã«ãcPanel éçºè ã¯ããã«æ°ã¥ããå€ãããã©ã«ãã«èšå®ããŸããã ãªã³ããã³ãã 以åã¯ãããã©ã«ãã ãã€ãããã¯, PHP-FPM ã¯ãè² è·ã®é«ãå ±æãµãŒããŒã«ã¯ãŸã£ããé©ããŠããŸããã§ããã å€ãã®äººã䜿çšããŠããŸã è£è¶³ãååŸã ãã ãã€ããã㯠ã¢ã€ãã«ç¶æ ã®ããŒã«ã cPanel PHP-FPM ã¢ã«ãŠã³ãã§ãã¡ã¢ãªãæ¶è²»ããŸãã ããããããã©ãã£ãã¯ãè¯å¥œã§ããã°ãå€æ°ã® PHP-FPM ããŒã«ãåãããµãŒã㌠(å ±æãã¹ãã£ã³ã°) ã§ãã¹ããããããšã¯ãããŸããã
ãŸãšã
PHP-FPM ã䜿çšããŠããŠãã©ãã£ãã¯ãå€ãå Žåã¯ãããã»ã¹ ãããŒãžã£ãŒ ãªã³ããã³ã О ãã€ããã㯠PHP-FPM ã®å Žåãåºæã®ãªãŒããŒãããã«ããã¹ã«ãŒããããå¶éãããŸãã ã·ã¹ãã ãç解ãããµãŒããŒã®æ倧容éã«å¿ã㊠PHP-FPM ããã»ã¹ãæ§æããŸãã æåã®ã»ãã pm.max_children PMã®æ倧䜿çšéã«å¿ã㊠ãã€ããã㯠ãŸã㯠ãªã³ããã³ããéžæããã¡ã¢ãªãšããã»ããµãéè² è·ã«ãªããã«åäœããã¬ãã«ãŸã§ãã®å€ãå¢ãããŸãã ããã«æ°ã¥ãã§ããã ååŸéçããã¹ãŠãã¡ã¢ãªå ã«ããããããã©ãã£ãã¯ã®æ¥å¢ã«ãã CPU ã®æ¥å¢ã¯æéã®çµéãšãšãã«æžå°ãããµãŒããŒãš CPU ã®è² è·å¹³åã¯æšªã°ãã«ãªããŸãã PHP-FPM ããã»ã¹ã®å¹³åãµã€ãºã¯ Web ãµãŒããŒã«ãã£ãŠç°ãªããæåæ§æãå¿ èŠãªãããããèªååãããããã»ã¹ ãããŒãžã£ãŒãå¿ èŠã«ãªããŸãã ãã€ããã㯠О ãªã³ããã³ã - ãã£ãšäººæ°ããããŸãã ãã®èšäºãã圹ã«ç«ãŠã°å¹žãã§ãã
UPD ãã³ãããŒã¯ãã£ãŒããè¿œå ããŸãã
åºæïŒ habr.com