はてなのサーバ/インフラを支える技術〜2016年新卒編〜 / OSC Tokyo 2016 Fall

F404d9992c5b98dd5b98ba3a10639646?s=47 Taketo Sasaki
November 05, 2016

はてなのサーバ/インフラを支える技術〜2016年新卒編〜 / OSC Tokyo 2016 Fall

https://speakerdeck.com/masayoshi とOSC Tokyo 2016 Fallにて発表した際の資料です。はてなでどのような仕事をしているのか、どのような技術を用いているかについてお話しました。

F404d9992c5b98dd5b98ba3a10639646?s=128

Taketo Sasaki

November 05, 2016
Tweet

Transcript

  1. ͸ͯͳͷ
 αʔόʗΠϯϑϥΛࢧ͑Δٕज़
 ʙ2016೥৽ଔฤʙ

  2. ͸ͯͳʹ͍ͭͯ • 2001೥૑ۀ • ࣾһ਺110໊ɿژ౎ͱ౦ژͷ2ڌ఺ମ੎ • αʔϏε • Mackerel •

    ͸ͯͳϒοΫϚʔΫ • ͸ͯͳϒϩά • Ոిձٞ • ਓྗݕࡧ͸ͯͳɺΩʔϫʔυɺΞϯςφɺͳͲͳͲ
  3. mackerel.io Application Performance Management ϒʔεग़లͯ͠·͢ʂʂʂ

  4. ࣭໰ • ֶੜ or ࣾձਓ • Πϯϑϥ or ΞϓϦέʔγϣϯ •

    WebαʔϏε։ൃܦݧ༗Γ or ແ͠
  5. ͸ͯͳͷνʔϜମ੎ • ։ൃνʔϜ • ΠϯϑϥνʔϜ • αʔϏεӡ༻νʔϜʢલ൒ɿtaketo957ʣ • ओʹαʔϏεͷӡ༻ɺվળΛ୲౰ •

    ج൫։ൃνʔϜʢޙ൒ɿmasayoshiʣ • શαʔϏεΛࢧ͑Δج൫෦෼Λ୲౰
  6. લ൒
 αʔϏεߏஙฤ

  7. ࣗݾ঺հ • id:taketo957ʢࠤʑ໦݈ਓʣ • 2016৽ଔ • αʔϏεӡ༻νʔϜ • ޿ࠂ഑৴γεςϜͷ࡮৽Λ୲౰ •

    ֶੜ࣌୅͸ਪનͱ͔ͯ͠·ͨ͠ • झຯ͸ϘϧμϦϯάͰ͢
  8. ࠓ೔ͷ͓࿩ • ͸ͯͳͷWebγεςϜͷཪଆ • ୲౰ͨ͠޿ࠂ഑৴γεςϜΛ୊ࡐʹγεςϜͷ
 Πϯϑϥ͕ͲͷΑ͏ʹͰ͖͍ͯ͘ͷ͔ • ϛυϧ΢ΣΞɺϦϦʔε·Ͱʹ΍Δ͜ͱΛத৺ʹ • Πϯϑϥͬͯ೉ͦ͠͏

    • Կ΋஌Βͳ͔ͬͨࣗ෼͕޿ࠂ഑৴ͷΠϯϑϥΛ
 ࡞ΔதͰ஌ͬͨ͜ͱɺ΍ͬͨ͜ͱ
  9. TOCʢલ൒ʣ • WebαʔϏεͷ࢓૊Έ • ͸ͯͳʹ͓͚ΔWebαʔϏεͷ
 ࡞Γํ • ҆ఆӡ༻ɺύϑΥʔϚϯε޲্ͷ
 ͨΊͷऔΓ૊Έ

  10. 1 WebαʔϏεͷ
 ࢓૊Έ

  11. WebγεςϜͱ͸ • HTTPϦΫΤετΛड͚ͯϨεϙϯεΛฦ͢΋ͷ • ϨΠςϯγͱεϧʔϓοτΛಉ࣌ʹୡ੒͢Δඞཁ͕͋Δ • ϨΠςϯγ…ϦΫΤετΛൃ͔ͯ͠ΒɺϨεϙϯε͕ ฦͬͯ͘Δ·Ͱͷ࣌ؒ • εϧʔϓοτ…୯Ґ࣌ؒ͋ͨΓʹॲཧͰ͖Δ


    ϦΫΤετ਺ • ͲΜͳʹෳࡶͰ͋ͬͯ΋جຊ͸ಉ͡
  12. WebγεςϜͷ3૚ߏ଄ʢཁૉʣ 1SPYZ "QQMJDBUJPO %BUBCBTF 1SPYZαʔόʢϦόʔεϓϩΩγʣ  ֎͔ΒͷϦΫΤετΛ௚઀ड͚औΔ  ੩తϑΝΠϧฦ٫ɺΞΫηε੍ޚͳͲΛߦ͏ "QQMJDBUJPOαʔό

     γεςϜͷத৺ͰΞϓϦέʔγϣϯϩδοΫΛ࣮ߦ  %#ͱͷ઀ଓɺϨεϙϯεͷߏஙͳͲΛߦ͏
 %BUBCBTFαʔό  αʔϏεͷఏڙʹඞཁͳσʔλΛอ࣋͢Δ  *0ॲཧʹΑͬͯҰൠతʹϘτϧωοΫʹͳΓ΍͍͢
  13. WebγεςϜͷ3૚ߏ଄ʢ઀ଓʣ 1SPYZ "QQMJDBUJPO %BUBCBTF 8FCαʔόͷ઀ଓํࣜ  1SFGPSL  5ISFBE1PPM 

    &WFOU%SJWFO %#αʔόͱͷ઀ଓ  ౎౓઀ଓ
 ϦΫΤετͷॲཧதͷΈ઀ଓΛҡ࣋  ৗ࣌઀ଓ
 %#઀ଓΦϒδΣΫτΛΩϟογϡͯ͠͠·͏
  14. ͦͷଞʹ΋… • Cache • KVS/NoSQL • Batch • Job Queue

  15. 2 WebαʔϏεͷ
 ࡞Γํ

  16. ޿ࠂ഑৴
 γεςϜͷ৔߹

  17. ޿ࠂ഑৴γεςϜͱ͸ • ΞϓϦέʔγϣϯ͔Βͷ޿ࠂදࣔϦΫΤετʹ ରͯ͠ɺ޿ࠂϨεϙϯεΛฦ٫͢Δ • ϦμΠϨΫτઌͷURLɺը૾URL౳ΛؚΉ΋ͷ "QQMJDBUJPO "E4FSWFS ޿ࠂ͍ͩ͘͞ ͸͍ͬ

    ೖߘ Ϣʔβ ޿ࠂೖߘऀ
  18. ޿ࠂ഑৴γεςϜͱ͸

  19. ޿ࠂ഑৴γεςϜͷੑ࣭ • ࢀরͷׂ߹͕ଟ͍ • WebαʔϏεͷPV਺ʹൺྫͨ͠ࢀরϦΫΤετʢΊͬͪΌଟ͍ʣ • ΞϓϦέʔγϣϯͷදࣔ଎౓ͳͲʹӨڹΛ༩͑Δ • ߋ৽ͷස౓͕গͳ͍ •

    جຊతʹೖߘऀʹΑͬͯೖߘ͞ΕΔ࣌ • ԿΛͲΕ͘Β͍഑৴͔ͨ͠ͷϩάΛอଘ͢Δඞཁ͕͋Δ • ޿ࠂओ΁޿ࠂޮՌΛใࠂ͠ͳ͍ͱ͍͚ͳ͍ "QQMJDBUJPO "E4FSWFS Ϣʔβ ޿ࠂೖߘऀ
  20. ։ൃͷྲྀΕ • ࢓༷ΛܾΊΔ • ੑ࣭΍ཁٻΛߟྀ • ઃܭ • ੑೳݟੵ΋ΓɺΞʔΩςΫνϟઃܭ •

    ߏங • ઃܭʹج͍࣮ͯࡍʹߏஙΛߦ͏ • ͸ͯͳͰ͸chefΛ࢖͏͜ͱ͕ଟ͍
  21. ΞʔΩςΫνϟ %BUBCBTF 4UPSBHF "QQ $BDIF ޿ࠂೖߘ $BDIF 1SPYZ ޿ࠂ഑৴αʔό "QQ

    ޿ࠂ؅ཧαʔό %BUBCBTF ϦΫΤετ 4FBSDI
 &OHJOF -PH
 'PSXBSEFS ΤϯυϢʔβ ޿ࠂೖߘऀ όον
 ੈ୅؅ཧ͞Εͨ
 Ωϟογϡͷ࡞੒ ϨϓϦέʔγϣϯ ϩά഑ૹ
  22. 3 ޿ࠂ഑৴γεςϜͷཁٻͱ
 ҆ఆӡ༻ɺύϑΥʔϚϯε޲্ ͷͨΊͷऔΓ૊Έ

  23. ޿ࠂ഑৴γεςϜͷཁٻ • ϨΠςϯγཁٻ • 50 msec or dieʢۀքج४ʣ • ߴ͍Մ༻ੑ

    • ഑৴͸Կ͕͋ͬͯ΋ʮઈରʹʯࢭΊͯ͸͍͚ͳ͍ • ϩά഑ૹͷ৴པੑ • ϩάͷॏෳɺܽଛ͸جຊతʹڐ͞ΕΔ΋ͷͰ͸ͳ͍ "QQMJDBUJPO "E4FSWFS Ϣʔβ ޿ࠂೖߘऀ NTFD
  24. ֶੜ࣌୅͔ΒͷISUCON ͷܦݧ͕׆͖Δ

  25. ෛՙࢼݧ • ϨΠςϯγཁٻͷ࣮ݱͷͨΊʹࣄલʹෛՙࢼݧ • ෛՙࢼݧπʔϧΛউखʹಋೖ • ຊ൪ϦϦʔεલʹνʔϜͰISUCON • ຊ൪૬౰ͷstaging؀ڥͱ
 ෛՙࢼݧπʔϧ༻ͷαʔόΛ४උ

    • ϨΠςϯγΛ֬ೝ͠ͳ͕ΒϘτϧωοΫΛվળ • ܧଓతʹվળΛߦ͑ΔΑ͏ʹCIʹ΋૊ΈࠐΉ
  26. ෛՙࢼݧπʔϧ ͜ͷลΛݟͳ͕Βνϡʔχϯάʢ਺஋͸ҰྫͰ͢ʣ

  27. ʮΦϖϨʔγϣϯͰ఺ΛकΓɺ 
 ϓϩάϥϛϯάͰ఺ΛͱΔʯ IUUQCMPHZVVLJPFOUSZXFCPQFSBUJPOTJTVDPO

  28. ϘτϧωοΫͷಛఆ • γεςϜΛ؍࡯͠ཧղ͢Δͷ͕࠷ॳ • ΞϓϦέʔγϣϯΤϯδχΞʹద੾ͳվળཁٻΛग़͢ • ϘτϧωοΫͷղੳ • ಛఆʹ༻͍Δπʔϧ •

    ίϚϯυ…top, dstat, strace, perfͳͲ • MySQLͷεϩʔΫΤϦ…pt-query-digestͳͲ • ϓϩϑΝΠϥ…NYTProfͳͲͰ࣮ߦ࣌ؒ
  29. ΞϓϦέʔγϣϯϩδοΫͷ
 ϘτϧωοΫͷಛఆ • NYTProfͷΑ͏ͳϓϩϑΝΠϥ • ࣌ࠁͷൺֱ΍จࣈྻͷ࣌ࠁ΁ͷม׵͕஗͍ • ϋογϡ஋ͷੜ੒ΞϧΰϦζϜ͕஗͍

  30. DBͳͲ઀ଓํࣜͷΦʔόʔϔου • ౰ॳ͸࣮૷ίετͳͲͷཧ༝͔Β౎౓઀ଓํࣜ • ෛՙࢼݧΛਐΊ͍ͯ͘͏ͪʹΦʔόʔϔου͕
 അࣛʹͳΒͳ͍͜ͱ͕൑໌ • straceͰৄࡉͳॲཧΛ௥͏ • ৗ࣌઀ଓํࣜʹมߋ

    • DB઀ଓपΓͷΦʔόʔϔου͸࡟ݮ • ΞϓϦέʔγϣϯͰ͔ͬ͠ΓΤϥʔϋϯυϦϯά͢Δඞཁ
  31. ϩάͷॻ͖ࠐΈपΓ • ޿ࠂ഑৴ͷಛ৭ • ࢀর͕ଟ͍ͷʹॻ͖ࠐΈ͕ൃੜ͢Δ • ͦ΋ͦ΋ѻ͏σʔλΛݮΒ͢ʢσʔλߏ଄ͷ޻෉ʣ • ϩάॻ͖ࠐΈͷΦϒδΣΫτ΋Ωϟογϡ •

    ݱঢ়Ͱ΋͜͜Ͱ౰ͨͬͯΔ • ϑΝΠϧ΁ͷॻ͖ࠐΈ෦෼ͰϩοΫ
  32. ͦͷଞ • PlackʢAppαʔόʣͷύϥϝʔλௐ੔ͳͲ • ϓϩηεΛ௕ੜ͖ͤ͞Δ • worker਺͸ίΞ਺ఔ౓ʹ • ࠷ऴతʹ͸Gazelleʹ •

    MySQL indexվળ • Χʔωϧύϥϝʔλνϡʔχϯά • reuse, recycle port΍tcp_fin_timeoutͳͲ • Մ༻ੑɺϩά഑ૹͷ৴པੑΛߴΊΔ޻෉
  33. લ൒·ͱΊ • ·ͱΊ • WebγεςϜͷجຊతͳ࢓૊Έ • ޿ࠂ഑৴γεςϜͷੑ࣭ͱઃܭ • ߴ଎ԽͷͨΊʹ΍ͬͨ͜ͱ •

    αʔϏεӡ༻ͷָ͠͞ • αʔϏεͷੑ࣭Λߟྀͯ͠࠷దղΛ୳Δͷָ͕͍͠ • ֶΜٕͩज़ͳͲ͕ͦͷ··݁Ռͱͯ͠ݱΕΔ
  34. ج൫ฤ

  35. ΞδΣϯμ • ࣗݾ঺հ • طଘͷ͸ͯͳͷαʔό,ωοτϫʔΫج൫ • ϩʔυόϥϯγϯά෦෼Λ঺հ • ج൫Λ΍Δָ͠͞(͕࣌ؒ͋Ε͹)

  36. ࣗݾ঺հ

  37. ࣗݾ঺հ • id:masayoshi • 2016೥4݄ೖࣾ • େֶ࣌୅ͷݚڀςʔϚ͸SDNͳͲωοτϫʔΫ • ֶੜ࣌୅͸MSPͰαʔό؂ࢹͷΞϧόΠτ •

    ݱࡏ͸WebΦϖϨʔγϣϯΤϯδχΞͷج൫νʔϜ
  38. ͸ͯͳͷΠϯϑϥࣄ৘

  39. ͸ͯͳͷΠϯϑϥࣄ৘ • αʔϏε͕ଟ͍ • 10αʔϏεҎ্ • ଉͷ௕͍αʔϏε • 10೥Ҏ্ͷαʔϏε •

    ςΩετϕʔεͷWebαʔϏε͕جຊ
  40. αʔϏε͕ଟ͍ • 1αʔϏεʹෳ਺ϩʔϧ • Proxy, APP, DB,… • αʔϏε ✕

    ϩʔϧʹΑΔαʔό୆਺ͷ૿Ճ • Ծ૝αʔό͚ͩͰ΋1000୆Ҏ্ (ਓ͸8ਓ) • αʔϏεͷଟ༷ੑ • ϒοΫϚʔΫ, ϒϩά, ޿ࠂ഑৴, Mackerel … • αʔϏε͝ͱʹϩʔϧ͸มԽ͢Δ
  41. ଉͷ௕͍αʔϏε • 10೥Ҏ্ͷαʔϏε • ͸ͯͳϒοΫϚʔΫ, ͸ͯͳਓྗݕࡧͳͲ • 10೥͸ج൫ʹͱͬͯ΋͔ͳΓͷมԽ͕͋Δ • Ծ૝ԽɺΫϥ΢υɺίϯςφ

    • ϛυϧ΢ΣΞͷଟ༷Խ
  42. ςΩετϕʔεͷWebαʔϏε • 1ճͷΞΫηεͷίωΫγϣϯ਺͕ଟ͍ • ProxyͷίωΫγϣϯॲཧ͸ॏཁ • HTTP2ͳͲͰվળͭͭ͠͸͋Δ • 1ΞΫηεͷ௨৴ྔ͸ଟ͘ͳ͍ •

    ετϦʔϛϯάͳͲͱ͸ҧ͏ • ϦΫΤεταΠζ << ϨεϙϯεαΠζ • େମͷWebαʔϏε͸Ϩεϙϯεͷ΄͏͕େ͖͍
  43. ͸ͯͳͷج൫͍Ζ͍Ζ • ϋ΢δϯά + Ϋϥ΢υ • Debian + Xen ͰͷαʔόԾ૝Խ

    • Chef, CapistranoͰͷϓϩϏδϣχϯά • MackerelͰͷ؂ࢹɺαʔό؅ཧ • Linux LVSͷෛՙ෼ࢄ
  44. ͸ͯͳͷωοτϫʔΫج൫

  45. ཁ݅ • ωοτϫʔΫ,αʔόͷ৔ॴΛറΒΕͨ͘ͳ͍ • αʔϏεɺϩʔϧͱ’৔ॴ’͕ґଘͨ͘͠ͳ͍ • ֤ϩʔϧ͸ෛՙ෼ࢄɺ৑௕Խग़དྷΔΑ͏ʹ͍ͨ͠ • Proxy͸େྔͷίωΫγϣϯΛࡹ͖͍ͨ •

    ͔͠͠ෳࡶ͗͢Δ࢓૊Έ͸ݏͩ
  46. /FUXPSL /FUXPSL /FUXPSL 3BDLPS%$ MPDBUJPO 3BDLPS%$ MPDBUJPO 4FSWFS 7. 7.

    7. 7. 7. 7. 7. 7. 7. 7. 4FSWFS 4FSWFS 4FSWFS 4FSWFS 4FSWJDF" 1SPYZ "QQ %# 4FSWJDF# 1SPYZ "QQ %# $BDIF
  47. /FUXPSL /FUXPSL /FUXPSL 3BDLPS%$ MPDBUJPO 3BDLPS%$ MPDBUJPO 4FSWFS 7. 7.

    7. 7. 7. 7. 7. 7. 7. 7. 4FSWFS 4FSWFS 4FSWFS 4FSWFS αʔϏε" 1SPYZ "QQ %# 4FSWJDF# 1SPYZ "QQ %# $BDIF ෺ཧతͳ഑ஔΛҙࣝ ωοτϫʔΫΛҙࣝ ෺ཧαʔόΛҙࣝ
  48. /FUXPSL /FUXPSL /FUXPSL 3BDLPS%$ MPDBUJPO 3BDLPS%$ MPDBUJPO 4FSWFS 7. 7.

    7. 7. 7. 7. 7. 7. 7. 7. 4FSWFS 4FSWFS 4FSWFS 4FSWFS αʔϏε" 1SPYZ "QQ %# αʔϏε# 1SPYZ "QQ %# $BDIF Ϧιʔε͕ڞ༗Ͱ͖ͳ͍
  49. 4FSWJDF" 1SPYZ "QQ %# 4FSWJDF# 1SPYZ "QQ %# $BDIF /FUXPSL

    /FUXPSL /FUXPSL 3BDLPS%$ MPDBUJPO 3BDLPS%$ MPDBUJPO 4FSWFS 7. 7. 7. 7. 7. 7. 7. 7. 7. 7. 4FSWFS 4FSWFS 4FSWFS 4FSWFS
  50. ϩʔϧͱLBͱωοτϫʔΫ

  51. ϩʔϧͱϩʔυόϥϯα • ϩʔϧؒͷ௨৴͸جຊతʹLBΛ௨͢ • ෛՙ෼ࢄɺ৑௕Խ͕ඞཁͳͨΊ • Linux LVS + KeepalivedΛ࢖༻

    (3ํࣜ͋Δ) • LB͕ෳ਺ωοτϫʔΫʹ෼ࢄͰ͖Ε͹Α͍ • LBͷԼ͸جຊతʹಉҰωοτϫʔΫ • L4ɺL7ͷLB͸ऴ୺͢Δ͜ͱͰผωοτϫʔΫՄ • ͨͩ͠ऴ୺͢ΔͷͰ஗͘ͳΓ͕ͪ
  52. LVSΛ࢖ͬͨϩʔυόϥϯα(NAT)   • ໭Γύέοτ͕ूத͢Δ • ࡹ͚ΔίωΫγϣϯ਺͕গͳ͍ • IPϔομΛॻ͖׵͑ΔͷͰ஗͍ =>

    ͸ͯͳͷ༻్ʹ͸߹Θͳ͍     ୯Ұ*1 7*1 ෳ਺*1 3*1 
  53. LVSΛ࢖ͬͨϩʔυόϥϯα(DR) • ໭Γύέοτ͕ूத͠ͳ͍ • ࡹ͚ΔίωΫγϣϯ਺͕ଟ͍ • IPϔομΛॻ͖׵͑ͳ͍ͷͰߴ଎ => Proxy޲͖ 

        "31Ͱղܾͯ͠.BDΞυϨεͷॻ͖׵͑ͷΈ  
  54. LVSΛ࢖ͬͨϩʔυόϥϯα(TUN) • Ϩεϙϯεύέοτ͕ूத͠ͳ͍ͷ͸DRͱಉ͡ • IPϔομΛΧϓηϧԽ͢ΔͷͰผωοτϫʔΫʹసૹՄೳ • ϦΫΤετύέοτͷMSS͕Լ͕Δ => ProxyҎ֎޲͖ 

    c c   ୯Ұ*1 7*1 *1JO*1  
  55. 4FSWJDF" 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %#

    -PBE#BMBODFSɹ 4FSWJDF# 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %# -PBE#BMBODFSɹ -PBE#BMBODFSɹ -PBE#BMBODFSɹ -PBE#BMBODFSɹ -PBE#BMBODFSɹ
  56. 4FSWJDF" 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %#

    -PBE#BMBODFSɹ 4FSWJDF# 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %# -PBE#BMBODFSɹ -PBE#BMBODFSɹ -PBE#BMBODFSɹ -PBE#BMBODFSɹ -PBE#BMBODFSɹ /FUXPSL /FUXPSL /FUXPSL /FUXPSL /FUXPSL /FUXPSL
  57. 4FSWJDF" 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %#

    -PBE#BMBODFSɹ1SPYZ 4FSWJDF# 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %# -PBE#BMBODFSɹ"QQ -PBE#BMBODFSɹ%#
  58. 4FSWJDF" 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %#

    -PBE#BMBODFSɹ1SPYZ 4FSWJDF# 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %# -PBE#BMBODFSɹ"QQ -PBE#BMBODFSɹ%# /FUXPSL /FUXPSL /FUXPSL
  59. 4FSWJDF" 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %#

    -PBE#BMBODFSɹGPSQSPYZ 4FSWJDF# 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %# -PBE#BMBODFSɹGPS"QQ %# ʜ $BDIF $BDIF $BDIF
  60. 4FSWJDF" 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %#

    -PBE#BMBODFSɹGPSQSPYZ 4FSWJDF# 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %# -PBE#BMBODFSɹGPS"QQ %# ʜ $BDIF $BDIF $BDIF /FUXPSL /FUXPSL
  61. 4FSWJDF" 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %#

    -PBE#BMBODFSɹGPSQSPYZ 4FSWJDF# 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %# -PBE#BMBODFSɹGPS"QQ %# ʜ $BDIF $BDIF $BDIF /FUXPSL /FUXPSL /FUXPSL
  62. 4FSWFS 4FSWFS 4FSWFS 4FSWJDF" 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ

    "QQ %# %# -PBE#BMBODFSɹGPSQSPYZ 4FSWJDF# 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %# -PBE#BMBODFSɹGPS"QQ %# ʜ $BDIF $BDIF $BDIF
  63. ͸ͯͳͷϩʔυόϥϯαํࣜͷબ୒ • جຊ͸LVS/TUNΛ࢖༻͢Δ • ෺ཧαʔόɺωοτϫʔΫʹґଘͤͣ഑ஔ • Proxyͷલஈʹ͸LVS/DRΛ࢖༻͢Δ • ࡹ͘ίωΫγϣϯ਺͕ଟ͍ •

    άϩʔόϧIPΞυϨεΛѻ͏ • ϦΫΤεταΠζ << ϨεϙϯεαΠζ ͕جຊ
  64. ج൫ٕज़ͷબ୒ • ͸ͯͳͷϋ΢δϯά؀ڥͷෛՙ෼ࢄͷҰ෦Λ঺հ • ৽ٕज़Ͱ͸ͳ͍͕͔ͬ͠Γࢧ͍͑ͯΔ • ౰વෆຬ΋͋ΔͷͰ׬੒ܗͰ͸ͳ͍ • ඞཁͳཁ݅,Πϯϑϥࣄ৘͸֤ࣾҟͳΔ •

    पΓ΍ྲྀߦΓʹৼΓճ͞Ε͗͢ͳ͍ • దࡐదॴɺແཧ͗͢͠ͳ͍બ୒Λ৺͕͚Δ
  65. ج൫Λ΍Δָ͠͞

  66. ج൫Λ΍Δָ͠͞ • େن໛ͳγεςϜΛߟ͑Δָ͠͞ • جૅతͳٕज़͕ษڧͰ͖Δ • OS,ωοτϫʔΫ,෼ࢄγεςϜ,... • Ϋϥ΢υͷத਎΍࣮૷͕૝૾ग़དྷͨΓ͢Δ •

    టष͞΋͋Δ • ݕূ΍όά౿ΜͩΓͱ͔…
  67. ྫ͑͹…

  68. Linuxϧʔλ • ͸ͯͳͰ͸ήʔτ΢ΣΠͳͲʹVyOSΛ࢖͍ͬͯΔ • సૹ͚ͩͳΒ200Kpps 10Gbps ग़Δ • ςΩετϕʔεͷWebαʔϏεͳΒे෼ •

    OSSͳͲ͕ͦͷ··࢖͑Δ • Chef, GitͳͲͷߏ੒؅ཧπʔϧ • MackerelͰ؂ࢹ͢Ε͹SNMP͍Βͣ
  69. LinuxωοτϫʔΫ %PN /*$ 1IZTJDBM -JOVY #SJEHF 9FO)ZQFSWJTPS 7. FUI WJG

    FUI /*$ 1IZTJDBM -JOVY #SJEHF 7. WJG FUI
  70. LinuxωοτϫʔΫͷߴ଎Խ • ݱঢ়͸VMؒͩͱ3~4Gpbsఔ౓ • ΦϑϩʔσΟϯά (VMؒͰ10GbpsՄೳ) • TSO (TCP Segmentation

    Offload), • LRO (Large Receive Offload) • SR-IOV • AWSͰ΋࢖༻Ͱ͖Δ
  71. XenϋΠύʔόΠβʔͱNUMA %PN 1IZTJDBM %PN6 9FO)ZQFSWJTPS .FN$POUSPMMFS .FN$POUSPMMFS σʔλ $16 $16

    %PN6 %PN6 σʔλ σʔλ
  72. Placing the guest automatically xen 4.5 %PN 1IZTJDBM %PN6 9FO)ZQFSWJTPS

    .FN$POUSPMMFS .FN$POUSPMMFS σʔλ $16 $16 %PN6 %PN6 σʔλ σʔλ
  73. ͦͷଞͷ͸ͯͳͷج൫ͷ͓࿩ • ͸ͯͳͷϩάӡ༻ ͜Ε·Ͱͱ͜Ε͔Β • https://speakerdeck.com/tatsuru/hatena-engineer-seminar-number-6 • ͸ͯͳʹ͓͚ΔLinuxωοτϫʔΫελοΫύϑΥʔϚϯεվળ • https://speakerdeck.com/yuukit/linux-network-performance-improvement-

    at-hatena • Ծ૝Խج൫ͷϦιʔε࠷దԽ • https://speakerdeck.com/taketo957/resource-optimization-on-virtualization-platform • ෛՙ෼ࢄٕज़ΛબͿͱ͖ʹߟ͑Δ͜ͱ • https://speakerdeck.com/masayoshi/fu-he-fen-san-ji-shu-woxuan-butokinikao-erukoto-1
  74. ΋ͬͱฉ͖͍ͨʂͱ͍͏ਓ͸… • Mackerelϒʔε΁ Εͬͭ͝ʔ

  75. ΋ͬͱ΋ͬͱ஌Γ͍ͨʂͱ͍͏ਓ͸…

  76. Πϯϑϥ͕޷͖ͳਓ ج൫͕޷͖ͳਓ΁ ઈࢍ࠾༻ڧԽதʂ IUUQIBUFOBDPSQKQSFDSVJUGSFTIPQFSBUJPOFOHJOFFS