HTTP/1.1 -> SPDY/3.1 -> HTTP/2Tatsuhiko [email protected]http2 RFCൃߦه೦[email protected]/04/14
View Slide
ࣗݾհ• ٱอୡ(Tatsuhiko Kubo)• [email protected]• Software Engineer in Infrastructure Engineering• Mercari, Inc.
ispowered by SPDY/3.1(nginx)
OSS࡞ͬͨΓίϯτϦϏϡʔτͨ͠Γ
Agenda• HTTP/1.1Ͱ௨৴͢ΔWebαΠτͷύϑΥʔϚϯενϡʔχϯά• ↑Λ্ͬͨͰHTTP/2Խͯ͠Έͨ• ࣮ࡍͷWebΞϓϦέʔγϣϯ(Zabbix)Λݩʹܭଌ• Google Develper ToolsͰܭଌ• ࠨԼͷεςʔλεόʔʹදࣔ͞ΕͯΔͭ
ຊ͔Βւ֎ͷZabbix dashboardʹΞΫηε
Client• MacBookPro• Google Chrome• HTTP/2༗ޮ• ϒϥβΩϟογϡৗʹແޮˣ
Server(ॳظঢ়ଶ)• Apache(prefork) + mod_php• தZabbix• KeepAlive Off• gzipѹॖແޮ• TLS Session Cache & Tickets༗ޮ
Server(ॳظঢ়ଶ)"QBDIF1PSUHTTPSServer(PPHMF"VUI1SPYZ"QBDIF1PSUSSLऴ Ϣʔβೝূ Zabbix
ύϑΥʔϚϯε(ॳظঢ়ଶ)໊߲ ܭଌલճͱͷൺֱॳظঢ়ଶͱͷൺֱ3FDFJWFESFRVFTUT %BUB5SBOTGFS ,# -PBE5JNF TFD %0.$POUFOU-PBEFE5JNFTFD
νϡʔχϯά ͦͷ1KeepAlive OnKeepAliveΛ༗ޮʹ͢Δ
ύϑΥʔϚϯε໊߲ ܭଌલճͱͷൺֱॳظঢ়ଶͱͷൺֱ3FDFJWFESFRVFTUT %BUB5SBOTGFS ,# ,# ,#-PBE5JNF TFD TFD TFD%0.$POUFOU-PBEFE5JNFTFD TFD TFD
νϡʔχϯά ͦͷ2AddOutputFilterByType DEFLATE text/htmlAddOutputFilterByType DEFLATE text/cssAddOutputFilterByType DEFLATE text/jsAddOutputFilterByType DEFLATE text/javascriptAddOutputFilterByType DEFLATE application/javascriptAddOutputFilterByType DEFLATE application/json-rpcgzipѹॖΛ༗ޮʹ͢Δ
νϡʔχϯάͦͷ3"QBDIF1PSUHTTPSServer(PPHMF"VUI1SPYZ"QBDIF1PSUSSLऴ Ϣʔβೝূ ZabbixOHJOY1PSUSSLऴΛnginxͰߦ͏
νϡʔχϯάͦͷ3# nginx.conf# in main contextworker_processes auto;tcp_nopush on;keepalive_timeout 65s;open_file_cache max=1000 inactive=20s;ssl_session_cache shared:SSL:30m;gzip on;gzip_comp_level 9;gzip_types text/css text/plain text/jstext/javascript application/javascriptapplication/json-rpc;# in event contextaccept_mutex_delay 100ms; # in event context੩తϑΝΠϧશ෦nginxͰ৴͢Δ
νϡʔχϯάͦͷ4listen 443 ssl spdy;SPDY/3.1Λ༗ޮʹ͢Δ
νϡʔχϯάͦͷ5HTTPSServer(PPHMF"VUI1SPYZ"QBDIF1PSUSSLऴ Ϣʔβೝূ ZabbixOHJOY1PSUSSLऴΛh2o(HTTP/2)Ͱߦ͏IP1PSU
ͳ͓ɺh2ogzipѹॖΛαϙʔτ͍ͯ͠ͳ͍ͷͰgzipѹॖApacheͰߦ͍·ͨ͠(gzipѹॖࡁΈϑΝΠϧͷ৴Ͱ͖ΔΑ)
·ͱΊ• WebαΠτ(Zabbix)ΛHTTPαʔόͷνϡʔχϯά͚ͩͰͯ͘͠Έͨ• 4ඵ͔͔ͬͯͨWebϖʔδͷϩʔυ͕1ඵʹͳͬͨ• h2o+HTTP/2ͱnginx+SPDY/3.1Ͱ΄΅ಉ͡• సૹྔSPDY/3.1ͷ࣌ͱൺͯ7KBݮগ• ϔομѹॖ(HPACK)͕ޮ͍ͯΔ༷• CPUόϯυͳϕϯνϚʔΫͳΒh2oͷํ͕͍ͣ• ࠓճωοτϫʔΫϨΠςϯγͷ؍͔Βܭଌͯ͠Έ·ͨ͠