ãã³ãã³å¤§ç¾ç§ã®ã¢ã¼ããã¯ãã£
mongrelP: @tasukuchan ã°ãã£ã©ãã¼ãããã³ç¾ã®é¯ãEeePCã¨ãã話ãæã¡ä¸ãã£ã¦ã¾ãããã ã®ç£è¦ç¨ã§ãããï¼ããã±ããããªãã§ã¿ã¦ããï¼
ãã³ãã³å¤§ç¾ç§ã®ã¢ã¼ããã¯ãã£ã«ã¤ãã¦ã¡ã¢ãã¦ããã¾ãã
æ¬å½ã¯ããã®ãã¿ã§Ruby Kaigiã«ç³ãè¾¼ããã¨æã£ããã©ããã£ããå¿ãã¦ããã®ã§ã¨ã³ããªãèµ·ããã¦ããã¾ããRubyããã¾é¢ä¿ãªãã£ããã
å ¨ã¦ã®ãªã¯ã¨ã¹ããåä»ãã»ãã·ã§ã³æ å ±ãä¿æããEeePC
次ä¸ä»£ãµã¼ããã©ãããã©ã¼ã EeePC
ãã³ãã³å¤§ç¾ç§å®ã¦ã®å
¨ã¦ã®ãªã¯ã¨ã¹ãã¯ãå
¨ã¦EeePCã«éããã¾ãã
å®ç©ã®åçãè¼ãã¦ããã¾ãã

EeePCã¯2å°ç¨¼åãã¦ãããï¼å°ã¯ãããã¹ã¿ã³ãã¤ã§ãã
EeePCã¯ãSSDã¨UPSãåããæ¬¡ä¸ä»£ãµã¼ããã©ãããã©ã¼ã ã§ãã
ã¡ã³ããã³ã¹ã®éããã¼ãã¼ããã¢ãã¿ãã¤ãªãå¿
è¦ãããã¾ããã
ã¾ããå種Linuxã®å°å
¥æ
å ±ãå
å®ãã¦ãã¾ãã
ã¡ã¢ãªå¢è¨ãªã©ãè¡ã£ã¦ãï¼ä¸æªæºã§èª¿éãè¡ããã¨ãã§ãã¾ãã
æ¶èåã¨ãã¦æ±ãããããæ¸ä¾¡åå´ã®å¿
è¦ãããã¾ããã
ã©ãã¯å
å æä½ç©ãå°ãªãã§ãã
ã¨ããããã§ããµã¼ãã«ãªã¹ã¹ã¡ã ã¨æãã®ã§ãããããã¾ãåãå
¥ããããªããã§ãããã¼â¦
ãããããããã____ ãããããã ï¼ ï¼¼ããï¼ï¼¼ãããªã .ãããããï¼ãï¼ã¼ï¼ ãï¼ã¼ï¼ï¼¼ ããããï¼ãã âï¼__人__ï¼â ï¼¼ãããï¼EeePCã¯ãSSDã¨UPSãåãã ãããã|ãã ããã|râ¬-|ãããã| ãããã æ¬¡ä¸ä»£ãµã¼ããã©ãããã©ã¼ã ãããã ï¼¼ãããã `ã¼'´ãã ï¼ ã ã ãクスクスã ___ ãããããããï¼ãã ã ãï¼¼ ãããã ãï¼ãããï¼¼ãã u. ï¼¼ãï¼ï¼ ããããï¼ ï¼âï¼ ãï¼âï¼ ãããï¼¼ ãããã|ã ãï¼__人__ï¼ã ããu. ã | ã ãã ï¼¼ãu.ï½ â´ã ããããï¼ ããããããããããããããããï¼¼ ã ï¼Â´ãããããããããããã ããã½ ã|ããããï½ããããããããããããããï¼¼ ãã½ããã -ä¸''''''"~~ï½`'ã¼--、ããã-ä¸'''''''ã¼-、. ãã㽠____(â)(â)â)ã)ãã(â_(â)â)â)) ï¾ï¾ï¾ï¾ ããããã ããã____ ãããããããï¼ãã ã ãï¼¼ï¼ï¼ï¼ ãããã ãï¼ããuãã ãããï¼¼ ããããï¼ ãããã u ï¼âï¼ããï¼¼ ãããã|ã ãããããããï¼__人__ï¼| ã ãã ï¼¼ããããuããã.ï½ âï¼ ããããããããããããããããï¼¼ ã ï¼Â´ãããããããããããã ããã½ ã|ããããï½ããããããããããããããï¼¼ ãã½ããã -ä¸''''''"~~ï½`'ã¼--、ããã-ä¸'''''''ã¼-、. ãã㽠____(â)(â)â)ã)ãã(â_(â)â)â))
注æç¹ã¨ãã¦ã
- ã¡ã¢ãªã¯å¢è¨ããã
- LANãå¿ è¦ãªãã°USBã§å¢è¨ããã
- ãã°é¢ä¿ã¯ã»ã¨ãã©æ¢ãã¦ããã
- ext3ã ã£ãããnoatimeãè¨å®ãã¦ããã
- æ¶²æ¶ã®ããã¯ã©ã¤ãã¯æ¶ãã¦ããã
- ã©ããã¦ããã¡ã¤ã«ã«ä½ãã䏿çã«æ¸ãåºãããã¨ãã«ã¯ãtmpfsã使ãã
ã£ã¦æãã§ããããã
ãã¨ã¯ãæè¿ãªãªã¼ã¹ãããLinuxãã£ã¹ãï¾ãã¥ã¼ã·ã§ã³ãªããããªãå°å
¥ã§ããã§ãããã
ãã®EeePCã¯ãPLANEXã®USB LANã³ãã¯ã¿ãä»ãã¦ããã¾ãã
Amazonã§3,000åãããã§è²·ãã¾ããã
ã¡ã¢ãªããEeePCç¨ã®ãããã¼ãªã®ãæ°ååã§è²·ãã¾ããã
EeePCä¸ã§åãã¦ãããµã¼ãã¹
- LVSããã³ã(keepalived)
- repcached
LVSããã³ããå¾ãã«æ§ããWebãµã¼ãã«ãªã¯ã¨ã¹ããæ¯ãåãã¾ããWebãµã¼ãã¨ã¯ãUSB LANã±ã¼ãã«ãéãã¦å å´ã®LANçµç±ã§æ¥ç¶ããã¾ããã¾ããWebãµã¼ãã¯ã»ãã·ã§ã³æ å ±ãã¯ããã¨ãããã¼ã¿ããmemcachedäºæãµã¼ãã§ããrepcachedã«ä¿åãã¾ãã
repcachedã¯ãå¼ç¤¾ã§éçºãã¦ããgroongaã«ç½®ãæãäºå®ã§ããgroongaã§ã¯ãmemcachedã®ãã¤ããªãããã³ã«äºæã®ãµã¼ãæ©è½ãæãã¾ãã(casã¨ãflagsã対å¿ãã)
å®ä¾¡ã ããã©ã³ã¹ã®ã¨ããPowerEdge 860
Webãµã¼ã
Webãµã¼ãã¯ãDellã®PowerEdge 860ã§ãããã¡ãã10ä¸åæªæºã§èª¿éãããã®ã§ãã10ä¸è¶ ããã¨ãæ¶èåãããªããªã£ã¦æ¸ä¾¡åå´å¿ è¦ã«ãªã£ã¡ããããã§ããOSã¯ãDebianã®testingã§ããWebãµã¼ãã¯ï¼å°åå¨ããLVSããã³ããããªã¯ã¨ã¹ããæ¯ãåãããã¾ãã
httpdã¯ãlighttpd 1.4.19ã§ããmod_nicodhã¨ããããã³ãã³å¤§ç¾ç§å°ç¨ã®lighttpdã¢ã¸ã¥ã¼ã«ãçµã¿è¾¼ãã§ãã¾ããmod_nicodhã¯ãCè¨èªã§ç°¡åãªã¢ã¯ã»ã¹ãã³ããªã³ã°ãªã©ãè¡ãã¢ã¸ã¥ã¼ã«ã§ãããã³ãã³ãã¥ããã£æ²ç¤ºæ¿ã®èªè¨¼ãªã©ããmod_nicodhã§å¦çãã¾ãã
ãã³ãã³å¤§ç¾ç§ã¯ãã»ã¨ãã©ã®ã³ã³ãã³ããéçã«ãªãããã«æ³¨ææ·±ãè¨è¨ãã¦ããã¾ããåçãªè¦ç´ ãæ¬²ããå ´åã§ããCookie/AJAXãªã©ãç¨ãã¦ãã¼ã«ã«ã§åçã«ãã¼ã¸ãçæã§ããããã«ãã¾ãããã¨ãã°ããã³ãã³å¤§ç¾ç§ã®å³ã¡ãã¥ã¼ã¯ãã°ã¤ã³æã»éãã°ã¤ã³æã§è¡¨ç¤ºãå¤ããã¾ãããããã¯Cookieã®ãloginãã¨ããå¤ãè¦ã¦ãã©ã¦ã¶å´ãåçã«çæãã¾ãã
éçãªãã¼ã¸ã¯ããã¡ã¤ã«ã¨ãã¦ä¿åããã¦ãã¾ããlighttpdã¯ããã®ãã¡ã¤ã«ããã®ã¾ã¾è¿ããããgzipå§ç¸®ããããã¦è¿ãã¾ããé常ã«ã·ã³ãã«ã§ããã¤ããã©ã¼ãã³ã¹ãæªãããã¾ããã
éçãªãã¼ã¸ããã¡ã¤ã«ã§ä¿åããã¦ããªãã£ãããå ¨ä½ãåçãªãã¼ã¸ããªã¯ã¨ã¹ãããããããå ´åã«ã¯ãmod_nicodhã§å¤å®ãè¡ããFastCGIçµç±ã§Rubyã«å¦çãæ¸¡ãã¾ããFastCGIã¯ãããã»ã¹ãWebãµã¼ãã¨åãããã®ã§ãã³ãã«ããããã§ãããã ãããã»ã¹ãè¤æ°ç«ã¡ä¸ããã®ã§ãmmapãªã©ããã¦è«ç空éã»ç©ç空éã®æµªè²»ãé²ãå¿ è¦ãããã¾ãã
ãã³ãã³å¤§ç¾ç§ã¯Rubyã使ã£ã¦æ§ç¯ãããã¨è¨ãã¨ãRailsãªãã§ããããã¨ããè¨ããã¾ããããããRailsã¯ä½¿ã£ã¦ãã¾ããããã³ãã³å¤§ç¾ç§å°ç¨ã«ããããã¼ãªãã¬ã¼ã ã¯ã¼ã¯ãæ¸ãèµ·ããã¾ããã
FastCGIã®ãã³ããªã³ã°é¨åã¯ãfcgiã¢ã¸ã¥ã¼ã«ã使ã£ã¦æ¸ãã¦ãã¾ããã¾ããRubyæ¨æºã®cgiã¢ã¸ã¥ã¼ã«ã¯ä½¿ãããæ¡ç°èª ããããªã©ã¤ãããcgi/cgiextã¢ã¸ã¥ã¼ã«ãæ¹é ãã¦ä½¿ã£ã¦ãã¾ãããã³ãã¬ã¼ãã¨ã³ã¸ã³ã¯ãæ¡ç°èª ããã®Erubisã使ã£ã¦ãã¾ããO/Rãããã¯ããã¼ãã«ãã¨ã«æã§æ¸ãã¦ãã¾ããä»ã§ããã°ãFastCGIã®ãã³ããªã³ã°é¨åã¯Rackã使ãããã¨ããã§ããã
ãã³ãã³å¤§ç¾ç§ã«ã¯ããã¼ã¯ã¼ãã®èªåãªã³ã¯æ©è½ãããã¾ãã以ä¸ã®ã¨ã³ããªã«ãããããã«ãSennaã¯é«éã«ãã¼ã¯ã¼ãã®èªåãªã³ã¯ãçæãããã¨ãã§ãã¾ãã
ãã¼ã¯ã¼ããªã³ã¯ãè¡ãRubyã¢ã¸ã¥ã¼ã«ãCè¨èªã§æ¸ãã¦ãå©ç¨ãã¦ãã¾ãã
éçãªã³ã³ãã³ãã§ããã£ãã·ã¥ãã¡ã¤ã«ãåå¨ããªãå ´åã«ã¯ããããçæãã¾ããæ¬¡åãããåãã³ã³ãã³ãã«å¯¾ãããªã¯ã¨ã¹ãã¯lighttpdã®ã¿ã§å¦çããã¾ãã
Rubyãç¨ããã®ã¯ã彿Rubyãã»ã¨ãã©ä½¿ã£ã¦ãªãã£ãã®ã§å¾©ç¿ã®ããã«ä½¿ãããã£ãã®ã¨ãååã«Rubyãæ¸ãã人ãããããã§ããRubyã¯é ãã¨ãããã¾ãããå®ç¨ä¸å°ã£ã¦ãã¾ãããé ãé¨åã¯ãCè¨èªã§æ¸ããlighttpdã®ã¢ã¸ã¥ã¼ã«ãRubyã®ã¢ã¸ã¥ã¼ã«ãå¦çãã¦ããããã§ããããããHpricotã®ã¡ã¢ãªãªã¼ã¯ããlibxml-rubyã®ã¡ã¢ãªãªã¼ã¯ããã°ã仿§å¤æ´ãlibmemcachedã®Rubyãã¤ã³ãã£ã³ã°ã®æåã«æ©ã¾ããã¾ãããä»ã ã£ããNokogiri使ãã£ã¦ãã話ãªãã§ããããã©â¦
ã¡ãªã¿ã«ãwebãµã¼ãã®ç¨®å¥ã¯ãApache Baseball Armyã«ãã¦ããã¾ãã
DBãµã¼ã
DBãµã¼ãããDellã®PowerEdge 860ã§ãããã¡ãã10ä¸åæªæºã§èª¿éãããã®ã§ããOSã¯ãFreeBSD 7.0ã§ããå¼ç¤¾ã§ã¯ãå¤ãã®ãã¼ã¿ãã¼ã¹ãµã¼ããFreeBSDã§ç¨¼åãã¦ãã¾ããRDBMSã¯ãMySQL 5.0 + Tritonnã使ã£ã¦ãã¾ãããã¹ã¿ï¼å°ï¼ã¹ã¬ã¼ãï¼å°ã®æ§æã§ãã
SELECTãå«ãããã»ã¨ãã©ã®ãªã¯ã¨ã¹ãã¯ããã¹ã¿ãã«å¯¾ãã¦è¡ããã¾ããWebãµã¼ãã§ã¯ãçæããhtmlãªã©ãéçãªãã¡ã¤ã«ã§ãã£ãã·ã¥ããããããã¹ã¿ã«å¯¾ãã¦ãªã¯ã¨ã¹ããéã£ã¦ãããã©ã¼ãã³ã¹ä¸å ¨ãå·®ãæ¯ããªãããã¬ããªã±ã¼ã·ã§ã³é ããæ°ã«ããå¿ è¦ããªãããã§ãã
ã¹ã¬ã¼ãã®ã¿ã«ãå ¨ææ¤ç´¢ç¨ã®ã¤ã³ããã¯ã¹ãä»ä¸ãããã¼ãã«ãåå¨ãã¾ããã¹ã¬ã¼ãã¯ã主ã«å ¨ææ¤ç´¢ã¯ã¨ãªç¨ã«ç¨ãã¦ãã¾ãã
ããã¼ã¿ãã¼ã¹ã«ãªã¯ã¨ã¹ããå±ããæç¹ã§è² ããã¨ããææ³ã§ããã¼ã¿ãã¼ã¹ã«ã¤ãã¦ã¯ç®ç«ã£ããã¥ã¼ãã³ã°ã¯è¡ã£ã¦ãã¾ãããè² è·çã«ã¯ã¾ã ä½è£ãããã¾ãã
APIãµã¼ã
APIãµã¼ãã¯ãlibeventã®evhttpã¨ããWebãµã¼ãæ©æ§ãç¨ãã¦å ¨ã¦Cè¨èªã§æ¸ããã¦ãã¾ããSennaã¨libmysqlã«ãªã³ã¯ãã¦ãã¾ããAPIãµã¼ãã¯ãç©ççã«ã¯Webãµã¼ãã¨åãã§ãããã¼ããåãã¦ãã¾ãã
ãã³ãã³åç»ã®watchãã¼ã¸ã§ã¯ãåç»ã¿ã¤ãã«ã¨ã¿ã°ã®æ¨ªã«ãç¾ããï¼ãã¨ãããã¼ã¯ãåºã¾ããåç»ã®ã¿ã¤ãã«/ã¿ã°ããããï¼ã¤ãã¤ã«å¯¾ãã¦åå¨ãããã©ãã確èªãããªã¯ã¨ã¹ããè¡ããã¾ãããã³åã®watchãã¼ã¸ã®PVã®æ°åã®ãªã¯ã¨ã¹ããæ¥ããã¨ã«ãªãã¾ãã
ãã®ä»ããã³ãã³åç»ã®æ¤ç´¢ãã¼ã¸ã«å¤§ç¾ç§ã®è¨äºã®ãµããªã¼ãåºãããããã³ãã³å¸å ´ã«å¤§ç¾ç§ã®è¨äºãåºãããããã¾ãã¾ãªAPIãå®è£ ãã¦ãã¾ãã
æã®ãã¼ã¸ã§ã³ã®libeventã§ã¯ãevhttpãé«è² è·æã«æåãæªããã£ãã§ããã¨ããããã§ãevhttpã使ã£ã¦æ¸ããWebãµã¼ãã«å¯¾ãã¦ããªãã¼ã¹ãããã·ã¨ãã¦Varnishã§ãã£ãã·ã¥ãè¡ã£ã¦ãã¾ããVarnishã§ã¯ãããã¾ãCè¨èªãç¨ãã¦æ¡å¼µãè¡ã£ã¦ãã¾ãã
Varnishã®ãã£ãã·ã¥ãµã¼ãã¯ï¼å°åå¨ãã¾ãããããã¾ããDellã®PowerEdge 860ã§ãOSã¯FreeBSDã§ãããã£ãã·ã¥ãµã¼ãã¯ååã«æ¸ããã¾ããã
ç¾å¨ã®evhttpã¯é«è² è·æã®æåãå®å®ãã¦ãã¦ããã®ã§ãç´ã«ãªã¯ã¨ã¹ããåãã¦ãããã®ããããã¾ããã
ã¾ã¨ã
EeePCãã°ãããã