ãã®çãèšäºã¯ãã·ã³ã°ã«ããã³ãããã¯ãŒã¯ã¢ãŒãïŒWordPressãããã¯ãŒã¯ã¢ãŒãïŒã®ãµã€ãã®å人çšWordPressãããã¯ãŒã¯ã§æé¡10ãã«ã®VPSã蚱容ã§ããç¶æ
ã«ããããã®ç§ã®è¡åã«ã€ããŠèª¬æããŠããŸããã€ã³ãã
ã ãããç§ã®æãããã€ãã¯å°éå®¶ãšã«ãžã¥ã¢ã«ãªèªè
ã®çããããã®ç©èªã¯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ãã³ã³ãã€ã«ããåã«ãæ§æããŒã®çŽ æŽããã
ã»ãã¯ã¹è§£æãè¡ããŸããã ç§ã¯ãããæ§ç¯ããæ¹æ³ãšãœãŒã¹ããã®ã¢ãžã¥ãŒã«ãèŠã€ããŸãããã屿 ¹ãåããšæããŸããã ãããããŠåéãç«ã¡äžãã ãµã€ãã¯æ©èœããŸãã APCã®ãŠãŒã¶ãŒãã£ãã·ã¥ã¯ãããããã¯ãåŒãèµ·ãããŸããã åºçç©ã®æŽæ°æ-PHP-FPM Uptime 9æé15åãèŠæ
ãªãã ãã ããPHPãWordPressçšã®æå°éã®äœæ¥ã¢ã»ã³ããªã«ã³ã³ãã€ã«ããæ¹æ³ãçè§£ã§ããŸããã§ããã çŸåšããã¹ãŠã®ã¢ãžã¥ãŒã«ã¯PHPèªäœã«ã³ã³ãã€ã«ãããŠãããããããæ£ãããªãã«ããæ¹æ³ãããããŸããã
芪æãªãã³ãã¥ããã£ãç§ã«æããŠãã ããããããã©ã®ããã«è¡ãããšãã§ããŸããïŒ PHPãã€ããªãæå°éã«æããŠWordPressãæé©ã«åäœãããã«ã¯ãã©ã®ãããªå®éã®ã¢ãžã¥ãŒã«ãå¿
èŠã§ããïŒ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
åãæ¥ã®å€æ¹ã®ãµããªã¡ã³ãïŒ
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/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 [
ã芧ã®ãšãããéçã®æ»ãã倧å¹
ã«å éããŠããŸãã ããã¯ãããã«åªããŠããŸãã ãã ãããã®å Žåããããã®4ç§éã§ããŒãã®IOã«ãã£ãŠã¢ã³ããŒããããå¯èœæ§ããããšããäºå®ã«ã€ããŠã¯ãŸã 眪ãç¯ããŠããŸãããããã¯ããããã«ãããŸããã åæ§ã®ãã¹ãã®ãµã€ã¯ã«ã«ããããã®ç¶æ³ã確èªãããŸããã
æ·»ä»ïŒ
ããã©ã«ãã®wwwããŒã«ã§php-fpmã®ãåŠ¥åœæ§ãããã§ãã¯ããããã®crontab bashã¹ã¯ãªãã
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ã§è©ŠããŠããã¹ãããå¢å ãããã°èšäºãè£è¶³ããããšæããŸãã
ããæ°å