Introduction of H2O, an optimized HTTP server / library implementation with support for HTTP/1, HTTP/2, websocketRead less

Web2.0 = Ajax/Cometãªã®ï¼ã¨ãããã»ã¹IDã¯ä»ã§ã16ããããªã®ï¼ã¨ãã¯ãµããªãã åã ã®ã¯ã©ã¤ã¢ã³ãããµã¼ãã«è¦æ±ããå¦çéã¯å°ããªãã®ã§ãã¼ãã¦ã§ã¢ã®æ§è½ä¸ã¯åé¡ããªãã¦ãããã¾ãã«ãã¯ã©ã¤ã¢ã³ãã®æ°ãå¤ããªãã¨ãµã¼ãããã³ã¯ããââããããæè¿Webéçºè ã®éã§è©±é¡ã¨ãªã£ã¦ãããC10Kåé¡ãï¼ã¯ã©ã¤ã¢ã³ã1ä¸å°åé¡ï¼ã ã AjaxãCometãªã©ã®ã¯ã©ã¤ã¢ã³ãå´æè¡ã«ä¼´ããµã¼ãå´ã®åé¡ã«é¢ãã¦ãããã誤解ããããããªã®ã§,æ¸ãã¦ãããã.ãã£ã¨lingrã®ä¸ã®äººã¯ãã®è¨äºèªãã§ãã¤ãã¤ãã¦ãã¯ã. 以ä¸ãè¨äºã«ãªããã¨ãæ¸ãã¦ããã®ã§ãã®ã¤ããã§. 誤解ãã®1 Ajaxã«ããWebã¢ããªã®å°é ã§ãµã¼ãå´ã®è² è·ãå¢å¤§ãã Ajaxã®å ¸åçãªä½¿ãæ¹ã¯ãµã¼ãã«åãåããã¦ãã¼ã¸ã®ä¸é¨åã ãã å¤åãããã¨ããã¢ãã .ããã¯ãã¼ã¸å ¨ä½ãæ¸ãæããå¾æ¥ã®æ¹æ³ã¨éã, ãã§ã«
TheC10kProblem - ãC10Kåé¡ãï¼ã¯ã©ã¤ã¢ã³ã1ä¸å°åé¡ï¼ã¨ã¯ããã¼ãã¦ã§ã¢ã®æ§è½ä¸ã¯åé¡ããªãã¦ãããã¾ãã«ãã¯ã©ã¤ã¢ã³ãã®æ°ãå¤ããªãã¨ãµã¼ãããã³ã¯ããåé¡ã®ã㨠ç®æ¬¡ ãã®ææ¸ã«ã¤ã㦠C10K åé¡ é¢é£ãµã¤ã ã¾ãèªãã¹ãæ¬ I/O ãã¬ã¼ã ã¯ã¼ã¯ I/O æ¦ç¥ 1. åã¹ã¬ãããè¤æ°ã®ã¯ã©ã¤ã¢ã³ããåãä»ãã. ããã¦ãã³ããããã³ã° I/O 㨠ã¬ãã«ã»ããªã¬åã®å®äºéç¥ãå©ç¨ãã. ä¼çµ±ç㪠select() ä¼çµ±ç㪠poll() /dev/poll kqueue() 2. åã¹ã¬ãããè¤æ°ã®ã¯ã©ã¤ã¢ã³ããåãä»ãã. ããã¦ãã³ããããã³ã° I/O 㨠å¤æ´åã®å®äºéç¥(readiness change notification)ãå©ç¨ãã. kqueue() epoll ãªã¢ã«ã¿ã¤ã ã»ã·ã°ãã« fd åä½ã®ã·ã°ãã« (Signal-per-fd)
ååSalesforceããã«ã½ã³ã«WebSocketã®ã¯ã¤ãºã¢ããªãåºãã¦ãããï½ã¨ãã話ãããããã ãä»ã®ã¨ãã身å 以å¤ããã¯ã»ã¨ãã©ã¢ã¯ã»ã¹ããã¦ãªãã£ã½ãã ã¾ãã»ã¨ãã©å®£ä¼ãã¦ãªãããããã¯å¥ã«æ§ããªããã ãã©ã審æ»ããã¦ãã形跡ããªãã®ã¯å¤§ä¸å¤«ãªã®ãããã(^^; ãã¦ãããã¯ãã¦ããWebSocketã¢ããªãä½ã£ããæ¯é試ãã¦ã¿ããã¨æã£ã¦ãããã¨ã®ã²ã¨ã¤ã«C10Kåé¡ã®æ¤è¨¼ã¨è¨ãã®ãããã¾ãã C10Kã¨ã¯ã¯ã©ã¤ã¢ã³ã1ä¸å°åé¡ã®ç¥ã§å¹³ããè¨ãã¨ãWebSocketã£ã¦ã¯ã©ã¤ã¢ã³ãã¨ãã£ã¨ã½ã±ããç¹ãã£ã±ã«ããããã ããããããªã®ã¯ã©ã¤ã¢ã³ãã®æ°ãã¡ãã£ã¨å¢ããããã£ã¨ããéã«ç ´ç¶»ããããããï¼ãã¨ããåé¡ã®ãã¨ã§ãã â æ¤è¨¼ã·ããªãª ä»åä½ã£ãã¢ããªã«ã¯ã«ã¼ã æ¯ã«ãã£ããã®æ©è½ãããã®ã§ãããå©ç¨ãããã¨ã«ãã¾ãã å ·ä½çãªç®æ¨æ°å¤ã¨ãã¦ã¯ã¨ãããã以ä¸ã®ããã«è¨å®ãã¾ã
ã¯ããããã¯åããã¤ãè¯ãè¦ãApacheã¨Nginxã®æ§è½å·®ã«è¦ãã¾ãã大ä½ãApacheã¯Nginxã®75%ç¨åº¦ã®æ§è½ã«è½ã¡çãã¾ããæ°åãã¤ãã®éçã³ã³ãã³ãã«å¯¾ãããªã¯ã¨ã¹ãå¦çã¯Nginxã®å¾æåéã ã¨æã£ã¦ããã®ã§ã大ä½ãããªãã®ã§ãã ããã§ãçé¢ç®ã«event_mpmã®ãã¥ã¼ãã³ã°ãè¡ã£ã¦ã¿ã¾ãããã§ã幾度ã¨ãªããã³ãã試ããçµæå°ãåºãããéçã³ã³ãã³ãã«å¯¾ããåææ¥ç¶æ°100ç¨åº¦ã«å¯¾ãã¦æé«ã®ããã©ã¼ãã³ã¹ã示ãevent_mpmã®è¨å®ã¯ä»¥ä¸ã®ããã«ãªãã¾ããã [program lang=âapacheâ escaped=âtrueâ] StartServers 4 MinSpareThreads 4 MaxSpareThreads 4 ThreadsPerChild 2 MaxRequestWorkers 2 MaxConnectionsPerChild 0 [/p
ã¿ã¤ãã«ã¯é£ãã§nginxã«ãããããªãã¼ã¹ãããã·ä½¿ããªãã£ã¦è©±ã é«è² è·ãµã¤ãã®ããã³ãã«nginxããªãã¼ã¹ãããã·ã¨ãã¦ãã¦ã¦å¾ãã®ãµã¼ãã¼ã¸ãªã¯ã¨ã¹ãããªãã¦ãããæ°ç¾rpsã§ãããããªã¨ã©ã¼ãnginxã®ãã°ã«è½ã¡ã¦ããã ãã®æã«ã¨ã£ã対çãå°ãã¾ã¨ãã¦ã¿ãã ã¾ããnginxã®ã¨ã©ã¼ãã°ã«ä¸ã®ãããªã¨ã©ã¼ã®å¯¾å¦æ³ã nginx: [emerg] bind() to 127.0.0.1:8080 failed (99: Cannot assign requested address) $ netstat -an |grep TIME_WAIT |wc ãã®ã¨ãã®wcã®çµæã¯2ä¸æ°åããã詳細ã調ã¹ã¦ããã¨ãã®ä¸ã®å¤§é¨åãå¾ãã®ãµã¼ãã¼ããnginxã«ãªã¯ã¨ã¹ããè¿ãããã«å©ç¨ãããã¼ããã»ã¨ãã©ã§ãã£ãã ããã解æ¶ããããã®å¯¾çã¨ãã¦ä¸çªæã£åãæ©ãã®ãã«ã¼ãã«ã®ãã¥ã¼ãã³
yubitterã¨ããæºå¸¯åãTwitterã¯ã©ã¤ã¢ã³ããµã¼ãã¹ã§ãã¦ã¼ã¶ã¼ã®ã¢ã¤ã³ã³ãæºå¸¯é»è©±åãã«å¤æãã¦ãã(â»1)ãããããç»åå¤æãµã¼ãã¼ã®httpdé¨åãApacheããnginxã¸å¤æ´ãã¾ããã å¦çã¯åç´ã«ä»¥ä¸ã®æµãã§ãã ã¯ã©ã¤ã¢ã³ãããã¢ã¤ã³ã³ç»åã®ãªã¯ã¨ã¹ããæ¥ã æ¢ã«ãã¼ããã£ã¹ã¯ã«ãã£ãã·ã¥ãã¡ã¤ã«ãããå ´åã¯ãããããã®ã¾ã¾è¿ã ãã¡ã¤ã«ããªãå ´åã¯ãPHPããã°ã©ã ãã¢ã¤ã³ã³ç»åãã¢ãããã¼ãããã¦ããTwitterã®ãµã¼ãã¼ï¼ç¾å¨ã¯Amazon S3/CloudFrontï¼ã¸åãã«è¡ã PHPããã°ã©ã ãåå¾ããç»åãã¼ã¿ãGDã©ã¤ãã©ãªãå©ç¨ãã¦å å·¥ããã¼ããã£ã¹ã¯ã«ä¿åãã¬ã¹ãã³ã¹ãè¿ã å¤æããã«ãããã以ä¸ã®2ãã¿ã¼ã³ãæ¤è¨ãã¾ããã ãªãã¬ã¤ã¹æ¡1ã¯ãApacheã®ã¬ã¤ã¤ã¼ãä¸ã¤ä¸ãã¦APãµã¼ãã¼ã«å°å¿µãã¦ãããæ¡ã§ã2æ¡ã¯ãApache+mod_
ã¡ã¼ã«ã®æç« ããã¬ã¼ã³è³æãªã©ããã¸ãã¹ãã¼ã½ã³ã§ããã°ãã½ã³ã³ã使ã£ã¦ä½æããã®ãå½ããåããã®ãã¾ãã¾ãªãã¸ãã¹ææ¸ãä½æããéãã©ããªãã©ã³ããé¸ãã§ä½¿ã£ã¦ããã®ã§ãããããããã§ã¯ãå 輩社ä¼äººã好ãã§ä½¿ã£ã¦ãããã©ã³ãã©ã³ãã³ã°ãç´¹ä»ããã¨ã¨ãã«ããã¸ãã¹ä½¿ãã«æé©ãªãã©ã³ãã«ã¤ãã¦ç°¡åã«èª¬æãã¾ãã 第1ä½ãMSã´ã·ãã¯ã121人ï¼29.3%ï¼ ç¬¬2ä½ãMSææã83人ï¼20.0%ï¼ ç¬¬3ä½ãHG丸ã´ã·ãã¯M-PROã35人ï¼8.5%ï¼ ç¬¬4ä½ãã¡ã¤ãªãªã30人ï¼7.2%ï¼ ç¬¬4ä½ãHGPåµè±è§ãããä½ã30人ï¼7.2%ï¼ ç¬¬6ä½ã游ã´ã·ãã¯ã12人ï¼2.9%ï¼ ç¬¬7ä½ãHGPæç§æ¸ä½ã10人ï¼2.4%ï¼ ç¬¬8ä½ããã©ã®ãã5人ï¼1.2%ï¼ ç¬¬8ä½ãArialã5人ï¼1.2%ï¼ ç¬¬10ä½ãCenturyã4人ï¼0.9%ï¼ ç¬¬11ä½ãTimes New Romanã 3 人ï¼0.7
æµãå°ãéè·¯å´æºã¸ç³æ²¹é¡ã絶対ã«æ¨ã¦ãªãã§ãã ããï¼ ä¸æ°´éã¸ç¯æ²¹ãã¬ã½ãªã³çã®ç³æ²¹é¡ãæµããå ´åãä¸æ°´éæ½è¨ã«é大ãªè¢«å®³ãçºçããã°ããããå¨è¾ºã®ä½å® çã«ãå¤å¤§ãªå½±é¿ãä¸ããæããããã¾ãã 家ã®æµãå°ãéè·¯å´æºã«æ±ºãã¦ç³æ²¹é¡ãæ¨ã¦ãªãã§ãã ããã ä¸æ°´éã«ç³æ²¹é¡ãæµãããã¨èµ·ããã㨠ä¸æ°´é管ã§ç³æ²¹é¡ãæ®çºããããã«å¼ç«ãããã¨ã§ççºäºæ ãèµ·ããæããããã¾ãã å·ã¸ç´çµãã¦ããéè·¯ã®ææ°´æºã«ç³æ²¹é¡ãææ£ããå ´åãæ²³å·ã«ãã®ã¾ã¾ç³æ²¹é¡ãæµãåºã¦ãã¾ããããã«ä½ãçãç©ã«æªå½±é¿ãåã¼ãæããããã¾ããã¾ãæ²³å·ã«æ»çããç³æ²¹é¡ãé¤å»ããä½æ¥ã«ã¯å¤é¡ã®è²»ç¨ããããã¾ãã è¿é£ã®ä½å® çã®ææ°´å£ããæ®çºããç³æ²¹ã®èããä¸ãããåºç¯å²ã«æªè被害ãçºçãããæããããã¾ãã ä¸æ°´å¦çå ´ã®çç©å¦çæ©è½ãæå·ããä¸æ°´ã®å¦çã«å¤§ããªæ¯éããããæããããã¾ãã ä¸æ°´é管ã®æ¸ æä½æ¥ãå¿ è¦ã¨ãªãå ´åãããã¾ã
ãç¥ãã
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}