ã€ã³ãã
ã ãããç§ã®æãããã€ãã¯å°é家ãšã«ãžã¥ã¢ã«ãªèªè ã®çããããã®ç©èªã¯2012幎4æã®çµããã«å§ãŸããŸããã
ç§ã¯å°ããªãªãŸãŒãã¿ãŠã³ã«äœãã§ããŸãïŒå°å ã«3å人ãå€ã«5äžäººãããã«æ¥ãŸããïŒãç§ã®å人çãªãããžã§ã¯ãã®ã»ãšãã©ã¯ãå°å ã®æããéœåžã«æ§ããããŠããŸãã äžå¯Ÿã®éœåžåãŠã§ãã«ã¡ã©ã倩æ°ãã¬ã€ããªã©ã ããã«ãç§ã¯ãŸã æ£çŸ©ãšæš©å©ã®ããã«å°ãèŠåŽããŠããŸãïŒç§ã¯ãã¬ãã®é åã§å°ããªãããžã§ã¯ããçµç¹ããŸãã-ç§ãã¡ã¯åœ¹äººã®ç¡æ³æ§ãªã©ã«ã€ããŠã®ã¬ããŒããæ®åœ±ããŸã...
ãããç§ãæå³ããããšã§ã...ããããã§ãïŒ ãã®ããããããã€ããŒã®ã©ãã¯ã«ã¯å®å šã«ç¡æã®2ãŠããããµãŒããŒïŒãµãŒããŒãšåŒã¶ã®ã¯å°é£ã§ãïŒãããã3ã€ã®ã©ãã¯ãããããã®ãã¡2ã€ã¯ç©ºã§ããã ãªãç¡æãªã®ã§ããïŒ ç§ã¯ãã®ãããã€ããŒãäŒæ¥ãµã€ããéçºããã®ãæäŒã£ãããã§ãã ããã«ãç§ãã¡ã®å°ããªçºã«ã¯ãç§ã®äŒŒããããªç¥èãæã£ãŠãã人ã¯ä»ã«ããŸãã-é ãåšèŸºãè³¢ã人ã¯ã¢ã¹ã¯ã¯ãä»ã®å€åœã«ããã«åºçºããŸãã
äžè¬ã«ãç§ã®ãããžã§ã¯ãã¯AthlonX3 / 4Gb RAMã§ã¹ãã³ããŠãããæé©åãšã»ããã¢ããã®åé¡ã«æ©ãŸãããŸããã§ããããæ°ã«å ¥ãã®ã¯ãŒããã¬ã¹ã§Webãµã€ããäœæãããã€ãã¯ç¡æã«ãªããšã¯æããŸããã§ããã
å°å ã®åžé·ã«é¢ããã¢ããã¥ã¢å ±åæžã®æ¬¡ã®å ¬éåŸããããã€ãé·ã¯ç§ã«è¿ã¥ãïŒåžé·ãšåãé¢ä¿è ããïŒã24æé以å ã«ãµãŒããŒããæ å ±ãååŸããããå§ããŸããã 劥åã¯åœŒã«ããã£ãã 圌ãæ¥ãŠèšã£ãã®ã¯è¯ãããšã§ã
ããæ¥ã¯ãããŸããã§ããã ãããŠãç§ã®äºæž¬ã¯ãã§ã«SERPã«åãŸã£ãŠãããèªåã®ç«å Žã倱ãããã¯ãããŸããã§ãã...çµè«ãšããŠã¯ã12æéã§ãã€ãã§10ãã«ã®æåã®å®äŸ¡ãªVPSãèŠã€ãããŸããïŒç§ã®åœã§ã¯ãããŸããïŒãããŒã¿ã茞è¡ãããDNSãæžãçŽãããæ²ãã¿ãååã«ãªããã»ãšãã©åäœããŸããã§ããããã»ãšãã©åäœããŸããã§ããã
ã¡ãªã¿ã«ã10ãã«ã®å¶éãçç±ã§åãããŸãã-ããã¯ç§ããŠã§ããããŒã§ãã®æã«æã£ãŠããéã§ãYandex.Directã«èç©ãããŸããã å®éããã®äºç®ã¯ãã£ãã®2ãã«å¢å ããŸãã-è¿œå ã®IPã«å¯ŸããŠã ä»ããã®VPSã®è²»çšã¯12ãã«ã§ãã
æ€çŽ¢ãšã³ãžã³ã®ã¿ãèŠãå Žå
VPSãã©ã¡ãŒã¿ãŒïŒCentOS 5ãXENã2.8Ghzã256 Mb RAMã15 GB SATAããã©ãã£ãã¯-ç¡å¶éã æ¥ãã§ãnginxãapache + mod_php + eacceleratorãmysqlãmemcacheãã€ã³ã¹ããŒã«ãããŸããã æ³åããŠã¿ãŠãã ãã-æéã¯å»ã ãšéããŠããã®ã§ãããåœããå¥ã®åœãžçŽ12ã®ã¬ã転éãããããå ¥ããŠèšå®ããæ€çŽ¢ãšã³ãžã³ãäœãç解ããªãããã«ããããšãå¿ èŠã§ã:)
ç§ã¯ããã°ã©ããŒã§ã¯ãããŸãã-ãŸããç°èã®llamoãšã³ã³ãŒããŒã§ããã管çè ã§ã¯ãããŸãã-yum installãyum eraseãmake && make installãç¥ã£ãŠããŸã...ããããå€ããå°ãªããäžå¯æ¬ ãªGoogleã©ãŒãã³ã°ã¹ãã«ããããŸãã
ç§ã¯ããšããšApacheããã³ããšã³ããèšå®ããŸããã å€ããµãŒããŒããã®ab2ã¯ã1ç§ããã1.4ãªã¯ãšã¹ããã瀺ããŸããã§ããã Nginxãã®åŸãç§ã¯åããŠèŠãŸããã 眮ããèªãïŒå°ããæéããããŸããã§ããïŒã©ããããããèšå®ãä¿åããŸãã-éå§ããŸããã ããã«é«éã§ãã eacceleratorãã€ã³ã¹ããŒã«ããåŸã6 rpsã§ã®ab2ã®çµæã¯ããŸãããããã«èŠããã®ã§ããã®ãã¹ãŠãæ®ããŸããã
mysqltuner.plããapache mpmã®éžæãæé©åããnginxã§ãã¡ã¢ãªã倧éã«æ¶è²»ãããããè©°ãŸã£ãã¹ã¯ããã®80ïŒ ãæ£åžžã§ããããã«èŠããŸããã ããããã©ãããããã¯ã¹ãã¬ã¹ã«ãããã®ã ã£ãããã§ã:)ç§ã®æèŠã§ã¯ããµã€ãã®é床ã¯èœã¡ãŸããã§ããã ããããç§ã®èŽè¡ãç¥ã£ãŠãç§ã¯ç§ã®èšªåè ãã©ãã«ãè¡ããªããšå®å šã«ç解ããŸããã
ãªããšãªãæ¬åœã«é ããã®
ãµã€ãã¯æ¡å€§ããæ¡å€§ããŸãã-ãã£ããã§ãããç§ã®ãªãŸãŒãéœåžã«é¢ãããªã¯ãšã¹ãã®ããã«ããã5ã®GoogleãšYandexã«éãããšãå€ã®ãµã€ãã¯ãã°ãã°å©çšã§ããªããªããŸããïŒRAM / SWAP-100ïŒ ïŒã å€ã«ã¯æé©åãè¡ãæéãæ¬åœã«ãªãã£ããããã¿ã¹ã¯ã幎æ«ãŸã§å»¶æããŸããã
4æäžæ¬ãã12æ7æ¥ãŸã§ããã®ããã¢ãªãŒã©ã€ãã£ã³ã°ãã¢ãŒãã§ãç§ã®ãµã€ãã¯æ¬¡ã®çµ±èšã衚瀺ããŸããã

.SUã¯WordPressãããã¯ãŒã¯ãç§ã®éœåžå°çšã®ãµã€ãã®ãããã¯ãŒã¯ã§ãã æ®ãã¯ãåäžãã®WordPressã§ãã PSãã¹ãŠããµããã¡ã€ã³ã«åå²ãããŠããå Žå-ç¶æããæ¹ã䟿å©ã§ãã ã¡ãªã¿ã«ãä»æ¥ã¯ãµããã¡ã€ã³ã§éçå€æ°ãäœæããããšã«ã€ããŠèªã¿ãŸããããåŸã§è©ŠããŸãã
ïŒã³ã¡ã³ãã§ãWordpressã®æªããã³ãŒããããã³ãªãœãŒã¹æ¶è²»éã«ã€ããŠè©³ãã説æããªãããã«ãé¡ãããŸããç§èªèº«ã¯ãå£ã«ã¶ã€ããé ã®ããã«ããã«ééããŸãããããã次ã®èšäºã®æ¬è³ªãããããŸãããïŒ
ã¡ãªã¿ã«ããã®æéäžã«ãåžå ã«ãµã€ããäœæããå¿ èŠã®ãã顧客ãããããã«ãªã£ããšããäºå®ã«èšåããããšãéèŠã§ãã ç§ã¯ç¹ã«æ°ã«ããŸããã§ãã-WPã«å»å°ãããŠããŸãã ãããŠããæç¹ã§ã次ã®ãµã€ãã®ç«ã¡äžãã«äŒŽããWPã®ãã®å±±å šäœãéåžžã«ã²ã©ãæ©èœãå§ããŸããã
èªãã§ã眮ããŠãèšå®ããŠããã¥ã³ã€ãã«ã¿ãé¢éžãã
yum updateã¯å€ãã®æŽæ°ããããããŸããã ãããã圌ãã¯ããŸãå©ããŸããã§ããããããŠåœŒãã¯å©ããããŸããã§ããã ç§ã¯php-fpmã«åãæ¿ããŠãã£ãã·ã¥ãéå§ããå¿ èŠãããããšãç¥ã£ãŠããŸããã ç§ã®å Žåãç§ã®ãµã€ãã®å€§éšåã¯ã»ãšãã©éçã§ããããããã£ãã·ã³ã°ãæãé¢é£æ§ãé«ããæ°é±éã§æå¹æéãåããŸãã ãŸããéçã§ã¯ãªããµã€ãïŒããã¯äž»ã«éãWordPressãããã¯ãŒã¯ã§ãïŒãæ éã«åŸ®èª¿æŽããŠãå¿ èŠãªãšãã«å¿ èŠãªãšãã«ãã£ãã·ã¥ãå³å¯ã«æŽæ°ããããšãã§ããŸãã
äžè¬çã«ãphp-fpmã¯ã¿ã³ããªã³ãªãã§ã€ã³ã¹ããŒã«ãããããšãæã¿ãŸããã§ããã å¥ã®ãªããžããªãããã«èŠã€ããŠãå¿ èŠãªãªãã·ã§ã³ããã¹ãŠæã£ãã³ã³ãã€ã«æžã¿ããã±ãŒãžãèŠã€ããŸããã äžè¬çã«ãããã¯ãœãŒãããå¯èœã§ãã-ããããããããããŸããã§ããã ã€ã³ã¹ããŒã«ãããã«ã»ããã¢ãã... httpd stop && php-fpm start-LLCïŒ 9 rpsïŒ ã¬ã³ãŒãã«è¡ããŸãïŒ ãã¡ããåè«ã§ãã
php-frmã®ã³ã¹ãã¯ããããŸãããeacceleratorã¯åãå£ãå¿ èŠããããŸãã-äºææ§ããªããæ°ãããã®ãå¿ èŠã§ãã Googleãã¬ãŒãã³ã°-ãã®ã¢ã¯ã»ã©ã¬ãŒã¿ã¯é·ãéå€ããªã£ãŠããŸããã php-pecl-apcãã€ã³ã¹ããŒã«ããŸãã åã³ã¿ã³ããªã³ãªãã§ã¯ãªãèšå®ãããŸãã-ç§ã¯ããã調æŽããèµ·åããŸããã ããŒãžçæã¯ãã©ããããããéåžžã«å¥åŠã«åäœãå§ããŸããã æåã®ãªãŒããã³ã°ã¯é·ãããã®åŸãã°ããã®éãµã€ããé£ã³å§ããŸãã ãã«ã ãã®åŸãåã³é£ã¶ã é·ãGoogleãã¥ãŒããªã¢ã«ã§ãFacebookã§ã®APCã®äœ¿çšã«ã€ããŠèª¬æããŸããã æçšã§ããããšãå€æããå€ãã®ããšãæããã«ãªããŸããã
php-fpmãæ§æããŸããã ãµã€ããç»ã-ãã®åŸãçªç¶502ãF5ãF5ã504ããªããŠã«ããŒïŒ php-fpmã¯ãã°ãããããšå¿çããªããªããŸãã ããäžåºŠèªã¿ãŸã-èšæ¶ãã»ãšãã©ãããŸããã ããè¯ããããã°ããããŠãã502ãèªã¿åããèªã¿åããmemleaksããããããã¯ãå®å šãªã»ããã
APCãå®è¡ããXCacheãé 眮ããŸãã äžè¬çã«éå§ããŸããã§ããã ããã£ã èããŠèªãå¿ èŠããããŸãã APCãæ»ããŸãã ããäžåºŠèšå®ããŸãã å¥ã®èšå®ã§ã¯ããããŸã§ã®ãšããé£ã³åºããåæ¢ããŠããŸãã ãŸããé床ãå€§å¹ ã«åäžããŸãã-ç¹ã«åçŽãªããŒãžã®çææéã¯æ°åã«ççž®ãããŸããïŒ2.7ç§-> 0.8ç§ïŒã ã¯ããã¿ããªã2.7s-ããã¯WordPressã®ã·ã³ãã«ãªããŒãžã§ãã ãããŠã.TVã«ããããã«ãã©ã°ã€ã³ãåããšãäžè¬çã«æé©åãªãã«æé©åãããã®ã¯19-25ç§ã®ã¿ã§ãã
ãããŠçªç¶ãç§ã¯æ°ã¥ããŸããïŒ æåã«ããã¹ãŠã®å°åºãœãããŠã§ã¢ãæ§æããå¿ èŠããããŸããããã¯ãå€ãã®äººã ã«ãã£ãŠå®è¡ããããã®ä»»åã«å®å šã«å¯ŸåŠããŸãã php-fpm + apcã®éžæãåæ¢ãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ãããã¯ãŒã¯ã¹ã¿ãã¯ãããããã³ãããšããžããæ§æãéå§ããŸããã ãããã¯ãŒã¯ã«ã¯å€ãã®æšå¥šäºé ãããããã¹ãŠã詳现ã§ã-ç¹°ãè¿ããŸããã èšå®ããã§ãã¯ãnginxã®ç§»åãéåžžã«éããªããmysqlãå°ãéããªããŸããã
次ã«ãnginx-ã¯ãŒã«ãŒæ°ã1ã«æžãããæ¥ç¶ã8196ã«æžãããŸãããsendfileãšaioãæå¹ã«ããdirectioå€ã確èªããŸããã ããã¥ã¢ã«ã«åŸã£ãŠoutput_buffersããã€ã¹ãããŸããã ãããŠããã«è¡ããŸãïŒ ã¹ã¿ãã£ãã¯ã§60 rpãå°ãè¶ ããŸããããæåã®åå©ã¯ç¶ç¶ããå¿ èŠããããšæããŸããã åæ§ã«php-fpmããŠã©ãŒã¯ã¹ã«ãŒããŸããïŒapcã«ã¯ãŸã 觊ããŸããïŒã çµãããéçã ãã®åŸãmysqlã Mysqltuner.plã¯ããããšãã¡ããããã¥ã¢ã«ãæäŒã£ãŠãããŸããã ãã£ãã·ã¥ãå¢ãããæ¥ç¶æ°ãæžãããåŸããã¹ãŠã®VPSäœæ¥ãå€§å¹ ã«å éãããè² è·å¹³åãäœäžããã¡ã¢ãªã®3åã®1ã解æŸãããŸããã
ãã ããphp-fpmã¯å®æçã«äœäžãç¶ããŸããã Googleã§å€ãã®ãªã³ã¯ãèªã¿ãŸããã APCã¯åªããŠããŸããã圌ã¯ãšãŠãåªããŠããŸãã å°ãåŸã§èª¬æããŸãã
ç ãããããµã€ãã¯ã¯ããªã
æ«å®çãªè§£æ±ºçãšããŠããã¹ãŠã®WordPressã«ãã£ãã·ã¥ãã©ã°ã€ã³-W3-Total-Cacheãé 眮ããããšã«ããŸããã å°æ¥çã«ã¯ãnginx fastcgiãã£ãã·ã¥ãšãã£ãã·ã¥ããŒãžã¢ãžã¥ãŒã«ã䜿çšãããã£ãïŒè©Šãã-æ°ã«å ¥ããªãã£ãã®ã§ããã®çç±ã以äžã«èšèŒããïŒã W3TCã¯ãã¹ãªãŒããžã®é«éã»ããã¢ããããšããŠéžæãããŸããããç§ã®å Žåã¯æé©ãªãœãªã¥ãŒã·ã§ã³ã§ããã ããã¯ãšã³ããèœã¡ãå Žåãããã³ããšã³ãã¯äººã ã«éçãªæ å ±ãäžããŸãïŒãã ãããã¹ãŠãã¹ã ãŒãºã§ã¯ãããŸããïŒã
次ã®ããã«W3TCãæºåããŸã-ããŒãžãã£ãã·ã¥ïŒãã£ã¹ã¯æ¡åŒµãããŒã¿ããŒã¹ãã£ãã·ã¥-APCããªããžã§ã¯ããã£ãã·ã¥-APCã å³ã«æéåãã ã¯ãŒããã¬ã¹ã®ã³ãŒãã§ãW3TCããããã³ããšã³ãããçŽæ¥ïŒphp-fpmãå®è¡ããã«nginxçµç±ã§ïŒããŒãžãã£ãã·ã¥ãé åžããããã®åæ©èœæ§æãèŠã€ãããããå®æãããŸããã åèµ·åããŠãããã§ã®ã¿ããµã€ããé«éãªå Žåã®æå³ãç解ãå§ããŸãã Staticsã¯nginx'aã®äžããéåžžã«çŽ æ©ãé£ã³åºããŸãã çŽç²ãªéååŠã§ã¯ãab2ã§æ倧800ïŒ!!!ïŒrpsã«ãªããŸãã
ãã¡ããããã®ããã¹ããæžãããã«åº§ã£ããšã-ab2ãæªãããšããããŠå å²ãè¯ãããšããã§ã«ç¥ã£ãŠããŸãã ãããããã®ç¬éãç§ã¯ãããç¥ããŸããã§ããã ãããŠãŸã ïŒ æåã®ã·ã§ãŒ1.4ãšäžçŽ800ãæ¯èŒããŠãã ããïŒ ããããããã¯ããã§çµããã§ã¯ãªããå§ãŸã£ãã°ããã§ãïŒ ããããç¿æã ãã
å€æ¹ã®æã¯è³¢ã
æã次ã®Yandex SMSããç®ãèŠããŸããããµã€ãã¯ããªãé·ãéé£çµ¡ãåãåã£ãŠããŸããã php-fpmã¯ããã³ããšã³ããªã¯ãšã¹ãã«å¿çããŸããã§ããã é·æéã®ãããã³ã°ãåèµ·åãåæ§æã®çµæãapcã®ãŠãŒã¶ãŒãã£ãã·ã¥ãã¯ãªãŒãã³ã°ãããšäœããã®ãããããã¯ãçºçããphp-fpmããªã¯ãšã¹ãã®åŠçãåæ¢ããããšãå€æããŸããã ãããŠãããã§ç§ã¯VPSã«ãã£ããã®ã«æ¥ãŸããããé©åã«äœ¿çšãããŠããŸããã§ããã Memcachedããã³phpã®å¯Ÿå¿ããæ¡åŒµæ©èœã¯memcacheã§ãã W3TCã®ããŒã¿ããŒã¹ãã£ãã·ã¥ãšãªããžã§ã¯ããã£ãã·ã¥ã¯ãMemcachedã«ç·æ¥ã«åæ§æãããŸããã ãã¡ãããlocalhostã§memcachedãå®è¡ããŠãããã£ã¹ã¯ãã£ãã·ã¥ã«æ¯ã¹ãŠããã©ãŒãã³ã¹ã¯åäžããŸããããç§ã®å Žåããã®å¢å ã¯éåžžã«é¡èã§ããã ãã¹ããªãã§ãèŠèŠçã«ã ã©ãããããã¯VPSã®éèŠãªIOã«ãããã®ã§ãã
php-fpm ALMOSTã¯åæºããŸããã§ããããã»ãšãã©ããã§ãã æ°ã«å ¥ããªãã£ã-座ã£ãŠãããæ©èœãããã©ãããåžžã«ç¢ºèªããããšã¯ã§ããŸããã ã¯ãããããŠã©ã®ããã«-ããã¯æ¬çªãœãªã¥ãŒã·ã§ã³ã®ããã«èŠããŸããïŒãŸã å°ããã§ããïŒãããã¯ãšã³ãã¯èœã¡ãŸãã æ®å¿µã ã ç°ãªããªãã·ã§ã³ã§ã³ã³ãã€ã«ãããæåŸã®APCãããŠã³ããŒãããŸããã ã¹ãã³ããã¯ã¯æ倧ã®ããã©ãŒãã³ã¹ã瀺ããŸããããæãæ®çºæ§ãé«ããªããŸãïŒãã¹ãŠå®éšçïŒã äžè¬ã«ãããã¯ãŠãŒã¶ãŒãã£ãã·ã¥ïŒdbãwp +w3tã®ã³ã³ããã¹ãã®ãªããžã§ã¯ãïŒãã¯ãªãŒãã³ã°ãããšãã®ãããããã¯ã«åœ±é¿ããããã³ã°ããã³ãã³ã°ããŸãã ãã®çµæããŠãŒã¶ãŒãã£ãã·ã¥ã¯memcachedã«çœ®ãããã¹ããŒãã«åäœããŸãã
ç§ãè©Šããªãã£ããã®ã 圌ã¯mmapã¡ã¢ãªãšpthreadãã¥ãŒããã¯ã¹ããã¯ããã¯ãåããAPCã«åºã¥ããŠåæ¢ããŸããã ã¯ã©ãŠã³çšã®å°ããªã¹ã¯ãªãããäœæããŸããã1åã«1åãphp-fpmã®æŽ»æ§ããã§ãã¯ããŸãã ãããŠãfastcgiã¿ã€ã ã¢ãŠãã2åã§nginxã«èšå®ããŸãã çªç¶ãã«ã«ãªããŸã§ïŒphp-fpmãèœã¡ãïŒãå°ããªãŠãŒã¶ãŒã¯ïŒç§ã®èŽè¡ãèæ ®ããŠïŒåŸ æ©ããŸãã ç§ã¯ãŸã å¥ã®è§£æ±ºçãèŠã€ããŠããŸãã-誰ããåºäŒã£ããç¥ã£ãŠããå Žå-æäŸããŠããŸãã
å¥ã®æ²ã¯nginx fastcgiãã£ãã·ã¥ã§ãã åæååŸãnginxãã£ãã·ã¥ãããŒãžã£ãŒã¯åèš256åã®ã¡ã¢ãªã®ãã¡60MBãæ¶è²»ããnginx + w3tcïŒããŒãžãã£ãã·ã¥ãã£ã¹ã¯æ¡åŒµïŒãããäœãããã©ãŒãã³ã¹ã瀺ããå®å šã«ç¡å¹åãããŸããã
æé©åæé ã®çµæ
ä»ã®ãšãããç§ã¯æ¬¡ã®ãœãããŠã§ã¢ã«æ±ºããŸããïŒnginx 1.3.8ãphp 5.3.19ïŒ+ php-fpmïŒãapc 3.1.19ãmemcached 1.4.15ãmysql 5.0.95ã¯ãã¢ã¯ãã£ãåãããW3ãã©ã°ã€ã³ã§è€æ°ã®åäžã®WordPressãš1ã€ã®WordPressãããã¯ãŒã¯ãæäŸããŸãåèšãã£ãã·ã¥
PHPã»ãã·ã§ã³ã¯memcachedããŠãŒã¶ãŒãã£ãã·ã¥ïŒdbããªããžã§ã¯ãïŒ-> memcachedã/ dev / shm /ã®apc.XXXXXXã«ãããapcã¯phpãªãã³ãŒãã®ãªããã£ãã€ã¶ãŒãšãã£ãã·ã¥ãšããŠã®ã¿æ©èœããŸãã
å®å šã«ãã£ãã·ã¥ããããµã€ãã§ã®ab2ã¯ããããã¯ãã£ãã·ã¥ãµã€ãã§çŽ200 rpsïŒåãæšãŠïŒã§çŽ800 rpsãçæããŸãã
æ¬æ¥12/12/2012ã«æŽæ°
PHP-FPMã絶ãéãªãäœäžããããšã«ããããããŠããŸããã ããããä»æ¥ãäžæ©äžãPHP 5.4.9ãã³ã³ãã€ã«ããåã«ãæ§æããŒã®çŽ æŽããã
phpåºå-m
ïŒphp -m
[PHPã¢ãžã¥ãŒã«]
apc
bcmath
ã«ã¬ã³ããŒ
ã³ã¢
ctype
ã«ãŒã«
æ¥ä»
dom
ãšã¬ã°
exif
fileinfo
ãã£ã«ã¿ãŒ
ftp
gd
gettext
ããã·ã¥
iconv
åœé
json
libxml
mbstring
mcrypt
memcache
ããã·ã¥
mysql
mysqli
mysqlnd
openssl
pcre
posix
ãªãã¬ã¯ã·ã§ã³
ã»ãã·ã§ã³
Simplexml
ãœã±ãã
SPL
æšæº
sysvmsg
sysvsem
sysvshm
ããŒã¯ãã€ã¶ãŒ
xml
zip
zlib
[PHPã¢ãžã¥ãŒã«]
apc
bcmath
ã«ã¬ã³ããŒ
ã³ã¢
ctype
ã«ãŒã«
æ¥ä»
dom
ãšã¬ã°
exif
fileinfo
ãã£ã«ã¿ãŒ
ftp
gd
gettext
ããã·ã¥
iconv
åœé
json
libxml
mbstring
mcrypt
memcache
ããã·ã¥
mysql
mysqli
mysqlnd
openssl
pcre
posix
ãªãã¬ã¯ã·ã§ã³
ã»ãã·ã§ã³
Simplexml
ãœã±ãã
SPL
æšæº
sysvmsg
sysvsem
sysvshm
ããŒã¯ãã€ã¶ãŒ
xml
zip
zlib
åãæ¥ã®å€æ¹ã®ãµããªã¡ã³ãïŒ
aktubaã®æ瀺ã®ãããã§ãIf-Modified-SinceãŸãã¯If-None-MatchããããŒã«å¯ŸãããµãŒããŒã®å¿çã®éèŠæ§ã«æ°ä»ããŸããã äœããã®çç±ã§ãnginxãW3TCããé©åãªå Žåã«ã¯304 Not ModifiedããããŸããã§ããã ãã®çµæã次ã®ãã£ã¬ã¯ãã£ãã1ã€ã®WPãµã€ãã®nginxæ§æã³ã³ããã¹ãã«è¿œå ããŸãããif_modified_since before; etag on; ããã¯ããµãŒããŒãžã®ãªã¯ãšã¹ãã®æ°ãæžããã®ã«éåžžã«è¯ãå¹æããããŸããã ãªã¯ãšã¹ãã®çµ±èšãèŠãŠããã¹ãŠã®ãµã€ãã§æå¹ã«ããŸãã
ããã«ãworker_aio_requests 128ãã£ã¬ã¯ãã£ããnginxèšå®ã®ã€ãã³ãã³ã³ããã¹ãã«è¿œå ãããŸããã aioã®ããã©ãŒãã³ã¹ãåäžãããŸãã
åæabã§ã¯ã次ã®çµæãåŸãããŸããã
ab -n 10000 -c 1000 httpïŒ//*.org/
ã芧ã®ãšãããéçã®æ»ããå€§å¹ ã«å éããŠããŸãã ããã¯ãããã«åªããŠããŸãã ãã ãããã®å Žåããããã®4ç§éã§ããŒãã®IOã«ãã£ãŠã¢ã³ããŒããããå¯èœæ§ããããšããäºå®ã«ã€ããŠã¯ãŸã 眪ãç¯ããŠããŸãããããã¯ããããã«ãããŸããã åæ§ã®ãã¹ãã®ãµã€ã¯ã«ã«ããããã®ç¶æ³ã確èªãããŸããã
This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking *.org (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: nginx Server Hostname: *.org Server Port: 80 Document Path: / Document Length: 22307 bytes Concurrency Level: 1000 Time taken for tests: 4.812 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 229199440 bytes HTML transferred: 226639120 bytes Requests per second: 2078.22 [#/sec] (mean) Time per request: 481.181 [ms] (mean) Time per request: 0.481 [ms] (mean, across all concurrent requests) Transfer rate: 46516.29 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 6 150 69.8 147 309 Processing: 105 288 70.8 276 600 Waiting: 5 144 50.0 145 511 Total: 215 439 93.6 448 783 Percentage of the requests served within a certain time (ms) 50% 448 66% 467 75% 477 80% 498 90% 541 95% 629 98% 634 99% 774 100% 783 (longest request)
ã芧ã®ãšãããéçã®æ»ããå€§å¹ ã«å éããŠããŸãã ããã¯ãããã«åªããŠããŸãã ãã ãããã®å Žåããããã®4ç§éã§ããŒãã®IOã«ãã£ãŠã¢ã³ããŒããããå¯èœæ§ããããšããäºå®ã«ã€ããŠã¯ãŸã 眪ãç¯ããŠããŸãããããã¯ããããã«ãããŸããã åæ§ã®ãã¹ãã®ãµã€ã¯ã«ã«ããããã®ç¶æ³ã確èªãããŸããã
æ·»ä»ïŒ
ããã©ã«ãã®wwwããŒã«ã§php-fpmã®ã劥åœæ§ãããã§ãã¯ããããã®crontab bashã¹ã¯ãªãã
2ããã䜿çšãããã®ã¯ããã³ã°ã¢ããããããšãããã®ã§ã2åç®ã ãç Žå£ãããããã§ãã
泚æïŒ php-fpmããã³nginxã¯ãlocation / fpmstatusãæ£ããæ©èœããããã«æ§æããå¿ èŠããããŸã
#!/bin/sh POOL=`curl --retry 3 --retry-delay 1 --connect-timeout 2 --max-time 2 --silent http://127.0.0.1/fpmstatus | grep pool | awk '{ print $2 }'` if [ "$POOL" != "www" ] then echo -------------------------------------------------------------------------- >>/var/log/php-fpm/restarts.log echo `date` PHP-FPM $host:$port is DOWN >>/var/log/php-fpm/restarts.log echo `date` first try sigterm PHP-FPM... >>/var/log/php-fpm/restarts.log killall -9 php-fpm >>/dev/null sleep 5 echo `date` second try sigterm PHP-FPM... >>/var/log/php-fpm/restarts.log killall -9 php-fpm >>/dev/null sleep 5 echo `date` restarting PHP-FPM NOW >>/var/log/php-fpm/restarts.log /etc/init.d/php-fpm restart >>/dev/null echo -------------------------------------------------------------------------- >>/var/log/php-fpm/restarts.log else sleep 1 fi exit
2ããã䜿çšãããã®ã¯ããã³ã°ã¢ããããããšãããã®ã§ã2åç®ã ãç Žå£ãããããã§ãã
泚æïŒ php-fpmããã³nginxã¯ãlocation / fpmstatusãæ£ããæ©èœããããã«æ§æããå¿ èŠããããŸã
apc.ini
extension = apc.so apc.enabled=1 apc.shm_size=128M apc.num_files_hint=0 apc.user_entries_hint=0 apc.ttl=0 apc.use_request_time=1 apc.user_ttl=0 apc.gc_ttl=3600 apc.cache_by_default=1 apc.filters apc.mmap_file_mask=/apc.shm.XXXXXX apc.file_update_protection=10 apc.enable_cli=0 apc.max_file_size=1M apc.stat=1 apc.stat_ctime=0 apc.canonicalize=1 apc.write_lock=0 apc.rfc1867=0 apc.rfc1867_prefix =upload_ apc.rfc1867_name=APC_UPLOAD_PROGRESS apc.rfc1867_freq=0 apc.rfc1867_ttl=3600 apc.include_once_override=0 apc.lazy_classes=0 apc.lazy_functions=0 apc.coredump_unmap=0 apc.file_md5=0 apc.localcache=1 apc.localcache.size=1024
nginx.confããã®æç²ïŒã°ãŒã°ã«ã§éåžžã«æ·±ã...ïŒ
worker_processes 1; timer_resolution 100ms; worker_rlimit_nofile 4096; worker_priority -5; events { worker_connections 8196; use epoll; } sendfile on; aio on; directio 5m; output_buffers 8 128k; tcp_nopush on; tcp_nodelay on; server_tokens off; reset_timedout_connection on; open_file_cache max=8192 inactive=60s; open_file_cache_valid 60m; open_file_cache_min_uses 2; open_file_cache_errors on;
wp-net.confïŒWordpressãããã¯ãŒã¯ãw3tcããŒãžãã£ã¹ã¯ãã£ãã·ã¥ã§åäœããå Žåãconfã¯nginxã«æ¥ç¶ããŸãïŒ
map $host $sid { wp-net.su -999; forum.wp-net.su 2; about.wp-net.su 4; info.wp-net.su 5; test.wp-net.su 6; } server { listen IP.IP.IP.IP:80; server_name wp-net.su *.wp-net.su; access_log /var/log/nginx/nginx_($host)_access.log; error_log /var/log/nginx/nginx_(ALL.wp-net.su)_error.log error; root /var/www/vhosts/wp-net.su; index index.php; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /\. { deny all; } location ~* /(?:uploads|files)/.*\.php$ { deny all; } if ($request_uri ~* "\/files\/(.*)"){ set $rtfile $1; } location ^~ /files { try_files /wp-content/blogs.dir/$sid/$uri /wp-includes/ms-files.php?file=$rtfile; expires 7d; } location ^~ /blogs.dir { internal; alias /var/www/vhosts/wp-net.su/wp-content/blogs.dir; access_log off; log_not_found off; expires 7d; } location ~* ^.+\.(js|css)$ { expires 2d; } location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { expires 7d; } set $cache_uri $request_uri; if ($request_method = POST) { set $cache_uri 'null cache'; } if ($query_string != "") { set $cache_uri 'null cache'; } if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") { set $cache_uri 'null cache'; } if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") { set $cache_uri 'null cache'; } location / { try_files /wp-content/w3tc-$host/pgcache/$cache_uri/_index.html $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; include /etc/nginx/fastcgi.conf; fastcgi_connect_timeout 1800s; fastcgi_read_timeout 1800s; fastcgi_send_timeout 1800s; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors off; fastcgi_pass phpfpm; } }
/etc/my.cnfããéèŠ
[mysqld_safe] key_buffer=8M max_allowed_packet=1M max_heap_table_size=24M table_cache=1024 sort_buffer_size=512K read_buffer_size=512K read_rnd_buffer_size=2M net_buffer_length=20K thread_stack=640K thread_cache=4 tmp_table_size=8M query_cache_limit=8M query_cache_size=16M skip-locking skip-networking skip-bdb skip-innodb skip-thread-priority old-passwords=0 thread_concurrency=1 max_connections=16
玳士ãå°é家ãç§ãç解ããŠããããã«ããã°ãã°æ¹å€ããã®ã¯è¯ãããšã§ãããç§ã¯å°é家ã§ã¯ãªããæ°äººãšããŸããã¹ããã©ã¯ãã£ã¹ãå ±æããŠããŸãããã誰ã«ãšã£ãŠã䟿å©ãªæ¹æ³ãèŠã€ããæ¹æ³ã瀺ããŠããŸãã ãã¡ãã-æ¹å€ããïŒ ãããŠãå®éã®ã³ãã¥ããã£ã®æšå¥šäºé ã¯ç¹ã«æçšã§ã-ãã®VPSã§è©ŠããŠããã¹ãããå¢å ãããã°èšäºãè£è¶³ããããšæããŸãã
ããæ°å