ãã®èšäºã§ã¯ããããã®ã¡ã«ããºã ãããŒã¿ãšã°ã©ãã®èª¬æãšæšè«ãšæ¯èŒããããŒã¿ãšã°ã©ãã玹ä»ããŸãã
倧èŠæš¡ãªã€ã³ã¿ãŒããããªãœãŒã¹ã¯ãé ããæ©ãããµãŒããŒè² è·ã®åé¡ã«çŽé¢ããŸãã ãµãŒããŒã1å°ãããªãå ŽåããWebãµãŒããŒãšDBãµãŒããŒãå€æ°ããå Žåã¯ããã¹ãŠããŸããããŸãã äžè¬ã«ãããã³ããšã³ãïŒããã³ããšã³ãïŒã1ã€ãããªãå Žåããã¹ãŠãæ¯èŒçè¯å¥œã§ãã ããããããã§ã¯ããµãŒããŒã®ãåç©åããå¢ãããšãã«åé¡ãçºçããŸãïŒ ãµãŒããŒéã®æ¥ç¶ã®éå±€ãããè€éã«ãªãã ãã§ãªããäžå åãããããŒã¿ã¹ãã¬ãŒãžãªã©ã®åé¡ããããŸããããã¯ãããŒã¿ããŒã¹ãéçãã¡ã€ã«ããããŠãã¡ãããã£ãã·ã¥ãã¡ã€ã«èªäœã«é©çšãããŸãã
è·å Žã§ã¯ã1å°ã®ãµãŒããŒãã¯ããã«è¶ ããããªã倧ããªã€ã³ã¿ãŒããããªãœãŒã¹ãéçºããŠããŸãã ãããŸã§ã®å©ç¹ã¯ãWebãµãŒããŒãšDBãµãŒããŒã«éå®ãããŠããŸãã ããããåœå±ã¯çŸåšãæ°ãã倧èŠæš¡ãªãããžã§ã¯ããéå§ããŸããããã®ãããžã§ã¯ãã§ã¯ããã®ã¯ã¬ã€ãžãŒãªæ§é ããã¶ã€ã³ãšæèã®ã¬ãã«ã§ãã§ã«èŠããŠããŸãã ããã°ã©ããŒã®å°ããªã°ã«ãŒãã¯ãæ°ããèå³æ·±ãä»äºã«çŽé¢ããŠããŸãããããžã§ã¯ãã®æ§é ãšéå±€ãèãçŽãããšã§ããç§ãã¡ã®èª°ããããŸã§ã«çµéšããããšã®ãªãèŠæš¡ã§ãã ããããããã¯ãã®ãããžã§ã¯ãã«é¢ãããã®ã§ã¯ãªãããã®éçºããçããåé¡ãã€ãŸããäž»ãªãã®ã¯ãã£ãã·ã¥ã®éäžã¹ãã¬ãŒãžã§ãã
ãã®èšäºã¯ããã®åé¡ã«å¯Ÿããå æ¬çãªè§£æ±ºçã瀺ããŠããããã§ã¯ãããŸããããããŒã«ããã£ãã·ã¥ã¹ããŒã ã®æ¯èŒãéžæã§åŸãçµéšãå ±æã§ããŸãã
èšäºã®äž»èŠéšåãã€ãŸãå ±åäŒã«é²ã¿ãŸãã
ãã£ãã·ã³ã°ããã©ãŒãã³ã¹ãæ¯èŒããããã«ã APC ã MemCache ã RamFS ã TmpFS ã XCache ãããã³ïŒç¹å¥ãªéžæïŒãããªãé«éãªDBMS MongoDBã®ãã£ãã·ã³ã°ããŒã«ãéžæãããŸããã
ããããã¹ãŠã®ããã°ã©ã ãšæ¡åŒµæ©èœãã©ã®ããã«ã€ã³ã¹ããŒã«ããããã©ã®ãããªå°é£ã«çŽé¢ãããããå§ããå¿ èŠããããšæããŸãã
ãã¹ãŠã®å®éšã¯ã2Gbã®ã¡ã¢ãªãšã€ã³ã¹ããŒã«ãããPHP [5.3.6]ãåããCentOSã·ã¹ãã ã§å®è¡ãããŸãããå ¬å¹³ãæãããã«ãåäžã®ããã±ãŒãžãæ§æããã«ããã¹ãŠããç®±ããåãåºãããŸããã
APC [3.1.9]ã®ã€ã³ã¹ããŒã«ïŒ
ãã¹ãŠãã·ã³ãã«ã§ç°¡åã§ãã peclãä»ããŠããã±ãŒãžãã€ã³ã¹ããŒã«ãããšãAPCãåäœããŸãã
Memcacheã€ã³ã¹ããŒã«[2.2.6] ïŒ
ãŸããéåžžã«ç°¡åã§ãã ãŸããpeclãä»ããŠããã±ãŒãžãã€ã³ã¹ããŒã«ããŠãããmemcacheããã°ã©ã èªäœãåå¥ã«ã€ã³ã¹ããŒã«ããŸãã ããã¯æ¡åŒµæ©èœã§ã¯ãªããåå¥ã«ã€ã³ã¹ããŒã«ããå¿ èŠããããµãŒãããŒãã£ã®ããã°ã©ã ã§ãããé£ããã¯ãããŸããã ã€ã³ã¹ããŒã«åŸããã¹ãŠãçŽ æŽãããæ©èœããŸããã
RamFSãã€ã³ã¹ããŒã«ããŸãã
ã€ã³ã¹ããŒã«ãããããã«äœæãããŸãã ãã¹ãŠãéåžžã«ç°¡åã§ãïŒ
mount -t ramfs -o size=1024m ramfs /tmp/ramfs
ãããã§ã¯1Gbã®ã¡ã¢ãªãå²ãåœãŠããã¡ã€ã«ã·ã¹ãã ãšããŠ
/tmp/ramfs
ããŠã³ãããŸãã
TmpFSãã€ã³ã¹ããŒã«ããŸãã
ãŸããéå»ã®å Žåãšåæ§ã«ãããã¯ã€ã³ã¹ããŒã«ã§ã¯ãªãäœæã§ãã ããã¯ã
mount -t tmpfs -o size=1024m tmpfs /tmp/tmpfs
ã³ãã³ã
mount -t tmpfs -o size=1024m tmpfs /tmp/tmpfs
ã§äœæãããŸããããã¯ã1Gbã®ã¡ã¢ãªãå²ãåœãŠã
/tmp/tmpfs
ãã¡ã€ã«ã·ã¹ãã ãšããŠããŠã³ãããããšã瀺ããŠããŸãã
泚ïŒ
RamFSãšTmpFSã®äž»ãªéãã¯æ¬¡ã®ãšããã§ããRamFSã«å²ãåœãŠãããå¶éã«éãããšãã·ã¹ãã ã¯äœ¿çšãããããªã¥ãŒã ã®å¶éã«ã€ããŠéç¥ãããèšé²ããæ°ããããŒã¿ã¯åã«æ¶ããããšãé€ããŠãäž¡æ¹ã®æ¹æ³ã¯ã»ãŒåãããã«æ©èœããŸãTmpFSïŒå²ãåœãŠãããå¶éã«éãããšãïŒã¯ã¹ããŒã¹äžè¶³ã«é¢ããã¡ãã»ãŒãžã衚瀺ããŸãããå€ãããŒã¿ã¯ã¹ã¯ããã«ç§»åãããŸããã€ãŸãããã£ã¹ã¯æäœãå®è¡ãããŸãããå®éã«ã¯ç§ãã¡ã«ã¯é©ããŠããŸããã RamFSãšTmpFSã¯äž¡æ¹ãšããŒãã«ãªã»ãããããã·ã¹ãã ã®åèµ·åæã«æ¶ããŸãããããã£ãŠãã·ã¹ãã ã®åèµ·ååŸã§ã䜿çšãããå Žåã¯ãèµ·åæã«ãããã®ããŒãã£ã·ã§ã³ãäœæããããã®ã¹ã¯ãªãããé 眮ããå¿ èŠããããŸãã
XCache [1.3.1]ã®ã€ã³ã¹ããŒã«ïŒ
ãããŠãããããç§ãã¡ãçŽé¢ããŠããèå³æ·±ãããšãå§ãŸããŸãã ãã®ããã±ãŒãžã®ã€ã³ã¹ããŒã«ã¯ãPHP 5.2ãã·ã¹ãã ã«ã€ã³ã¹ããŒã«ãããŠããïŒãããŠçŸåšãããã·ã¹ãã ã®ã¡ã€ã³ã®1ã€ã§ããïŒãããéåžžã«æ éã§ããããšãå€æããŸãããXCacheã«ã¯å€æ°ã®äŸåé¢ä¿ãªã¹ããããããã®ããã±ãŒãžã®ã€ã³ã¹ããŒã«ã«ã¯ã¹ãªããããå¿ èŠãããããåé¡ããããŸãã圌ã«ã¯å³æžé€šãå¿ èŠã§ãã ãããããã®å Žåã§ãããã®æ¡åŒµæ©èœã®åé¡ã¯çµãããŸããã§ãããã€ã³ã¹ããŒã«åŸïŒããã³æ£åžžãšæãããïŒããã®æ¡åŒµæ©èœã®æ£ããåäœã確èªãããã¹ããå«ãã¹ã¯ãªããã®èµ·åäžã«ãå€æ°ãã¡ã¢ãªã«æžã蟌ãããšãããšæ°ããåé¡ãçºçããããã§ããšã©ãŒãçºçããŸããïŒ
Warning: xcache_set(): xcache.var_size is either 0 or too small to enable var data caching in /usr/local/php5.3/xcache.php on line 6
圌女ã«ç¶ããŠæ¬¡ã®ããã«ãªããŸããïŒ
Warning: xcache_get(): xcache.var_size is either 0 or too small to enable var data caching in /usr/local/php5.3/xcache.php on line 10
çã£çŽããªæãããŒããŒããã¿ã³ããªã³ã§ãã®ãšã©ãŒãš2æ¥éæŠããŸããããçµæã¯ãŒãã§ããã * .soã誀ã£ãŠã¢ã»ã³ãã«ããããšããæ¶æž¬ããããŸããããåéãã* .soãã€ã³ã¿ãŒãããããããŠã³ããŒãããåãããŒãžã§ã³ã«çœ®ãæããŠãäœãèµ·ãããŸããã§ããã Googleãããããè¡åãèµ·ããããŸã£ããåãStackOverflowã®åé¡ãèŠã€ãããŸããã ãããã圌ãã¯ãã®åé¡ã®è§£æ±ºçãèŠã€ããããªãã£ããããXCacheãªãã§ããã«ãã¹ããè¡ãããšãäœåãªããããŸããã 以åã®ãã¹ãã§ã¯ãAPCãšXCacheã®éãã¯ã»ãšãã©éèŠã§ã¯ãªãããšã瀺ããããããããã»ã©å€±æããããšã¯ãããŸããã§ããããXCacheã«ã¯ããã«å€ãã®åé¡ããããŸãã
MongoDB [1.8.1]ãã€ã³ã¹ããŒã«ããŸãã
Mongoã®ã€ã³ã¹ããŒã«ã¯éåžžã«ç°¡åã§ããã®ããã»ã¹ã«ã€ããŠã¯èª¬æããŸããããå¿ èŠãªæ§æã§èµ·åãæäŸããŸãã
/usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data --profile=0 --maxConns=1500 --fork --logpath /dev/null --noauth --diaglog=1 --syncdelay=0
é¢å¿ã®ããäž»ãªãã©ã¡ãŒã¿ãŒã¯ãæåŸã®ã
--syncdelay=0
ãã§ããããã¯ãã¡ã¢ãªå ã®ããŒã¿ãšHDDäžã®ããŒã¿ã®åææéã瀺ããŸãã æå®ãããå€0ã¯ãHDDãšã®Mongoåæãæ瀺çã«çŠæ¢ããããšãæå³ããŸãããã®æ©èœã¯DBMSã®äœæè ã«ãã£ãŠèšè¿°ãããŠããŸãããåé»ãMongoããŒã¢ã³ã«åœ±é¿ãäžããå¯èœæ§ã®ããä»ã®ã·ã¹ãã é害ã®ããããã¹ãŠã®ããŒã¿ã倱ãããŸãã ç§ãã¡ã¯ãã®ãªã¹ã¯ã«éåžžã«æºè¶³ããŠããŸãã ãã®DBMSããã£ãã·ã¥ã¡ã«ããºã ãšããŠäœ¿çšããŠã¿ãŸãã
ãã¹ãŠãã€ã³ã¹ããŒã«ããããæ§æããããŠããããã§ãããã¹ãèªäœã«çŽæ¥é²ãã§ãã ããã
æ£çŽã«èšããšã4ã€ã®ããŒã¿ããªã¥ãŒã ïŒ4Kbã72Kbã144Kbã2.12MbïŒã§ãã¹ããå®æœããŸãã
ã°ã©ãã§åŸãããããŒã¿ãèæ ®ããŠãã ããã
4KbïŒ

æåã®ãã£ãŒãïŒ4KbããŒã¿ãèšé²ããããã®ã¿ã€ã ã©ã€ã³ïŒã§ãããããã«ãMemCacheã¯ææªã®çµæã瀺ããRamFsãšTmpFsãMongoãšAPCãããã«ç¶ããŸããã

2çªç®ã®ã°ã©ãïŒ4KbããŒã¿ãèªã¿åãããã®ã¿ã€ã ã©ã€ã³ïŒã§ã¯ãMongoãåŸæ¹ã®ããŒã¿ãã¯ã£ãããšããããŠããŸãããMemCacheã¯RamFãšTmpFã«ã»ãŒå¹æµããŸããããã®ã°ã©ãã§ã¯ãäž¡è ã®å·®ç°ã¯ã»ãšãã©èŠããŸããã
72KbïŒ

3çªç®ã®ãã£ãŒãïŒ72KbããŒã¿ãèšé²ããããã®ã¿ã€ã ã©ã€ã³ïŒãããMemCacheã¯äžé©åã«åäœããMongoã¯éåžžã«äºæž¬å¯èœã§ãã APCãRamFãããã³TmpFãã»ãŒäžèŽããããšã¯éåžžã«é©ãã¹ãããšã§ãã

ãããŠã4çªç®ã®ãã£ãŒãïŒ72KbããŒã¿ãèªã¿åãããã®ã¿ã€ã ã©ã€ã³ïŒã«è¡šç€ºãããèªã¿åãå€ã¯æ¬¡ã®ãšããã§ãã
144KbïŒ

5çªç®ã®ã°ã©ãïŒ144KbããŒã¿èšé²ã¿ã€ã ã©ã€ã³ïŒããéå§ãããšãã»ãŒãã¹ãŠã®ã·ã¹ãã ã§æ¢ã«å¥åŠãªåäœãèŠãããŸã-MemCacheã¯éåžžã«äžå®å®ã«åäœããç¹°ãè¿ãã®åæ°ãå°ãªããšãæéã倧ãããã®ãããããã«é·ããªããããã«é©ãã¹ãããšã«ã 500åã®ç¹°ãè¿ãMongoãAPCãè¿œãè¶ãå§ããŸããïŒ RamFããã³TmpFã¯ãé©ãã»ã©é«ãé床ãç¶æããŸãã

6çªç®ã®ã°ã©ãïŒ144KbããŒã¿ãèªã¿åãããã®ã¿ã€ã ã©ã€ã³ïŒã§ã¯ãMongoãå šå¡ã«è² ããŠãããAPCãæéã§ãã
2.12MbïŒ

7çªç®ã®ã°ã©ãïŒ2.12MbããŒã¿ãèšé²ããããã®ã¿ã€ã ã©ã€ã³ïŒã§ã¯ãMongoã¯éåžžã«å®å®ããŠããããšãå€æããŸããããæåŸã®ç¹°ãè¿ãã§500åã¯äžå®å®ã§ãããã圌ã¯ãµãã«ã«ãšã©ãŸããŸããã ãã¡ããããããã€ãªãªãŒããŒã¯APCã§ããã以äžã§èª¬æããMemCacheãTmpFãããã³RamFã§èå³æ·±ãããšãèµ·ãã£ãŠããŸãã

æåŸã®ã°ã©ãïŒ2.12MbããŒã¿ã®ã¿ã€ã ã©ã€ã³ã®èªã¿åãïŒãéåžžã«çŽ æŽãããç»åã§ããTmpFsãæãé ããRamFsãæãéãåºãŠããŸããã ãã1ã€ã®é©ãã¹ãããšã¯ãMongoãAPCãããåªããŠããããšã§ãïŒ
ãã¡ã€ã«ã2.12Mbã§500åãã£ãã·ã¥ãããæåŸã®2ã€ã®ã°ã©ãã®æåŸã®ç¹°ãè¿ããèŠããšã500ïŒç¹°ãè¿ãã®æ°ïŒ* 2.12ïŒ1ã€ã®ãã¡ã€ã«ã®ãµã€ãºïŒ= 1`060Mbãšããããªãèå³æ·±ãããšãããããŸãã RamFSããã³TmpFSã§ã¯ãæ倧ããªã¥ãŒã ãè¶ ããŸããã ãããã£ãŠãæ°åã¯éåžžã«èå³æ·±ããäºæž¬äžå¯èœã§ãã
å®éããã¹ãŠãäºæ³éãã«å€æããŸãããäžéã«éãããšïŒãããŠ1024Mbã«éãããšïŒãRamFSã¯åã«ããŒã¿ã®æžã蟌ã¿ãåæ¢ããæžã蟌ã¿ã³ãã³ããç¡èŠããŸãã ãã®ããŒã¿ãèªã¿åããšããèªã¿åãã¯ç©ççã«è¡ãããŸãããã空ã®æååãè¿ãã ãã§ãïŒPHPã§åŠçããå Žåãæååã¯ç©ºã§ã¯ãªããnullãšããŠè§£éãããŸãïŒãäžæ¹ãTmpFSã¯ãŸã£ããéã«åäœããŸã-ãã¹ãŠã®ããŒã¿ãæžã蟌ã¿ãäºåã«å²ãåœãŠãŸãå€ãããŒã¿ãã¹ã¯ããã«ç§»åããŠé 眮ããŸãã ããã¯ããã®ãããªããªã¥ãŒã ãšåæ§ã®å埩åæ°ã§ãRamFSãã¬ã³ãŒããåŠçããã®ã«éåžžã«çãæéãèŠããååšããªãããŒã¿ãèªã¿åãæéãããã«ççž®ãããšããäºå®ã説æããŸãããTmpFSã¯éã«ããã£ã¹ã¯æäœãå®è¡ããå¿ èŠãããããã«ãã®æéãå€§å¹ ã«å¢ãããŸã
äžã§ç€ºããããã«ããã¹ãŠã®è³éã¯ãç®±ããåºããŠãããã«åãåºããããããã®ããŒã«ã¯æ§æãããŠããŸããããããã£ãŠãmemcacheã®æéã¯0ã§ãã ãµã€ãºã2.12MBã®1ã€ã®ã¬ã³ãŒãã®èšé²ãããããªã¥ãŒã ã¯ãmemcacheã«ä¿åãããŠãã1ã€ã®ã¬ã³ãŒãã®æ倧éãåã«è¶ ããŠããŸãã memcacheã2.12Mbãè¶ ããããŒã¿ãä¿åã§ããããã«ããã«ã¯ãmemcacheèªäœãåæ§ç¯ããå¿ èŠããããŸããããã以å€ã®ãã¹ãŠãé©å®æ§æããå¿ èŠããããŸãããåãæ¹æ³ã§ç°ãªã補åãæ§æããããšã¯ã»ãšãã©äžå¯èœãªã®ã§ããã®ãã¥ã¢ã³ã¹ããã®ãŸãŸã«ããŠãããŸãä»ã®ãŸãŸã§ãã ããããããã¯çå®ã§ã¯ãããŸããããç§ãã¡ã¯ãããã®ãã¹ãŠã®æ段ãåçã®æ¡ä»¶ã§åäœããããšã«ãã£ãšèå³ããããŸããã
ãã®ãã¹ãŠã®ããŒã¿ãèŠããšãåéçºè ã¯èªåèªèº«ã®çµè«ãšãäœãã©ã®ããã«äœ¿çšãããã«ã€ããŠã®çµè«ãåŒãåºãããšãã§ããŸãã ç§ãã¡ã¯çµè«ãåºããŸããã
ãããã¯ãŒã¯ãä»ããŠãã£ãã·ã¥ã§ããããŒã«ã®ããŒã¿ã«é¢å¿ããããããMemCacheãšMongoã«ã€ããŠèª¬æããŸãã ãã¡ãããå€ãã®å Žåãã°ã©ãã瀺ãããã«ãMemCacheã¯èªã¿åãæã«Mongoããã€ãã¹ããŸããããã¯ãMongoãMemCacheããã€ãã¹ããã¬ã³ãŒããããéèŠã§ãã ãã ããMongoDbãæäŸãããã¹ãŠã®æ©èœãèæ ®ãããšãåœç¶ã®ããšãªããããã¹ãŠã®æ©èœãšæäœã®ãããããåããæ¬æ ŒçãªDBMSã§ãããããMongoã瀺ãé床ã®æ¬ ç¹ã¯ãè€éãªãµã³ãã«ãäœæããæ©èœã«ãã£ãŠç°¡åã«ã«ããŒã§ããŸãã 1ã€ã®ãªã¯ãšã¹ãã§è€æ°ã®ãšã³ããªïŒãã£ãã·ã¥ãšã³ããªïŒãååŸããŸãã MemCacheãä»ããMongoDbã®ãã1ã€ã®ãã©ã¹ïŒé©åã§ããèããããã¢ããªã¢ãŒããã¯ãã£ã䜿çšãããšã1ã€ã®ãªã¯ãšã¹ãã§ãã£ãã·ã¥ãããããŒãžèŠçŽ ãåãåãããšãã§ããŸãã
ãŸããã·ã¹ãã ããã«ãã¬ãã«ãã£ãã·ã¥ïŒäžæ¬¡ãã£ãã·ã¥ïŒãããã¯ãŒã¯ãã£ãã·ã¥ïŒMemCacheãŸãã¯Mongoãããã³äºæ¬¡ãã£ãã·ã¥APCãŸãã¯XCacheïŒãã ããæ¯èŒãå¿ èŠã§ãïŒïŒããããšèããããšãã§ããŸãã
è¿ãå°æ¥ãMemCacheãšMongoã®ãã詳现ãªåæãšæ¯èŒãèšç»ãããŠããŸã-è²»ããããæéã ãã§ãªããããã»ããµãšãµãŒããŒå šäœã®è² è·ã枬å®ããŠã䜿çšãããã¡ã¢ãªãæ¯èŒãããŸãã
æåŸã«ããã¹ããç¹°ãè¿ãå®è¡ãããè¡šã«ç€ºãããŠããããŒã¿ããã¹ãã®10ã20åã®ç¹°ãè¿ãã®å¹³åã§ããããšã瀺ããããšæããŸãã
ããªã¥ãŒã ã倧ããããã衚圢åŒã®ãã¹ãããŒã¿ã¯æäŸããŸããã