はてなのサーバ/インフラを支える技術〜2016年新卒編〜 / OSC Tokyo 2016 Fall
by
Taketo Sasaki
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
ͯͳͷ αʔόʗΠϯϑϥΛࢧ͑Δٕज़ ʙ2016৽ଔฤʙ
Slide 2
Slide 2 text
ͯͳʹ͍ͭͯ • 2001ۀ • ࣾһ110໊ɿژͱ౦ژͷ2ڌମ • αʔϏε • Mackerel • ͯͳϒοΫϚʔΫ • ͯͳϒϩά • Ոిձٞ • ਓྗݕࡧͯͳɺΩʔϫʔυɺΞϯςφɺͳͲͳͲ
Slide 3
Slide 3 text
mackerel.io Application Performance Management ϒʔεग़లͯ͠·͢ʂʂʂ
Slide 4
Slide 4 text
࣭ • ֶੜ or ࣾձਓ • Πϯϑϥ or ΞϓϦέʔγϣϯ • WebαʔϏε։ൃܦݧ༗Γ or ແ͠
Slide 5
Slide 5 text
ͯͳͷνʔϜମ • ։ൃνʔϜ • ΠϯϑϥνʔϜ • αʔϏεӡ༻νʔϜʢલɿtaketo957ʣ • ओʹαʔϏεͷӡ༻ɺվળΛ୲ • ج൫։ൃνʔϜʢޙɿmasayoshiʣ • શαʔϏεΛࢧ͑Δج൫෦Λ୲
Slide 6
Slide 6 text
લ αʔϏεߏஙฤ
Slide 7
Slide 7 text
ࣗݾհ • id:taketo957ʢࠤʑ݈ਓʣ • 2016৽ଔ • αʔϏεӡ༻νʔϜ • ࠂ৴γεςϜͷ৽Λ୲ • ֶੜ࣌ਪનͱ͔ͯ͠·ͨ͠ • झຯϘϧμϦϯάͰ͢
Slide 8
Slide 8 text
ࠓͷ͓ • ͯͳͷWebγεςϜͷཪଆ • ୲ͨ͠ࠂ৴γεςϜΛࡐʹγεςϜͷ Πϯϑϥ͕ͲͷΑ͏ʹͰ͖͍ͯ͘ͷ͔ • ϛυϧΣΞɺϦϦʔε·ͰʹΔ͜ͱΛத৺ʹ • Πϯϑϥͬͯͦ͠͏ • ԿΒͳ͔͕ͬͨࣗࠂ৴ͷΠϯϑϥΛ ࡞ΔதͰͬͨ͜ͱɺͬͨ͜ͱ
Slide 9
Slide 9 text
TOCʢલʣ • WebαʔϏεͷΈ • ͯͳʹ͓͚ΔWebαʔϏεͷ ࡞Γํ • ҆ఆӡ༻ɺύϑΥʔϚϯε্ͷ ͨΊͷऔΓΈ
Slide 10
Slide 10 text
1 WebαʔϏεͷ Έ
Slide 11
Slide 11 text
WebγεςϜͱ • HTTPϦΫΤετΛड͚ͯϨεϙϯεΛฦ͢ͷ • ϨΠςϯγͱεϧʔϓοτΛಉ࣌ʹୡ͢Δඞཁ͕͋Δ • ϨΠςϯγ…ϦΫΤετΛൃ͔ͯ͠ΒɺϨεϙϯε͕ ฦͬͯ͘Δ·Ͱͷ࣌ؒ • εϧʔϓοτ…୯Ґ࣌ؒ͋ͨΓʹॲཧͰ͖Δ ϦΫΤετ • ͲΜͳʹෳࡶͰ͋ͬͯجຊಉ͡
Slide 12
Slide 12 text
WebγεςϜͷ3ߏʢཁૉʣ 1SPYZ "QQMJDBUJPO %BUBCBTF 1SPYZαʔόʢϦόʔεϓϩΩγʣ ֎͔ΒͷϦΫΤετΛड͚औΔ ੩తϑΝΠϧฦ٫ɺΞΫηε੍ޚͳͲΛߦ͏ "QQMJDBUJPOαʔό γεςϜͷத৺ͰΞϓϦέʔγϣϯϩδοΫΛ࣮ߦ %#ͱͷଓɺϨεϙϯεͷߏஙͳͲΛߦ͏ %BUBCBTFαʔό αʔϏεͷఏڙʹඞཁͳσʔλΛอ࣋͢Δ *0ॲཧʹΑͬͯҰൠతʹϘτϧωοΫʹͳΓ͍͢
Slide 13
Slide 13 text
WebγεςϜͷ3ߏʢଓʣ 1SPYZ "QQMJDBUJPO %BUBCBTF 8FCαʔόͷଓํࣜ 1SFGPSL 5ISFBE1PPM &WFOU%SJWFO %#αʔόͱͷଓ ଓ ϦΫΤετͷॲཧதͷΈଓΛҡ࣋ ৗ࣌ଓ %#ଓΦϒδΣΫτΛΩϟογϡͯ͠͠·͏
Slide 14
Slide 14 text
ͦͷଞʹ… • Cache • KVS/NoSQL • Batch • Job Queue
Slide 15
Slide 15 text
2 WebαʔϏεͷ ࡞Γํ
Slide 16
Slide 16 text
ࠂ৴ γεςϜͷ߹
Slide 17
Slide 17 text
ࠂ৴γεςϜͱ • ΞϓϦέʔγϣϯ͔ΒͷࠂදࣔϦΫΤετʹ ରͯ͠ɺࠂϨεϙϯεΛฦ٫͢Δ • ϦμΠϨΫτઌͷURLɺը૾URLΛؚΉͷ "QQMJDBUJPO "E4FSWFS ࠂ͍ͩ͘͞ ͍ͬ ೖߘ Ϣʔβ ࠂೖߘऀ
Slide 18
Slide 18 text
ࠂ৴γεςϜͱ
Slide 19
Slide 19 text
ࠂ৴γεςϜͷੑ࣭ • ࢀরͷׂ߹͕ଟ͍ • WebαʔϏεͷPVʹൺྫͨ͠ࢀরϦΫΤετʢΊͬͪΌଟ͍ʣ • ΞϓϦέʔγϣϯͷදࣔͳͲʹӨڹΛ༩͑Δ • ߋ৽ͷස͕গͳ͍ • جຊతʹೖߘऀʹΑͬͯೖߘ͞ΕΔ࣌ • ԿΛͲΕ͘Β͍৴͔ͨ͠ͷϩάΛอଘ͢Δඞཁ͕͋Δ • ࠂओࠂޮՌΛใࠂ͠ͳ͍ͱ͍͚ͳ͍ "QQMJDBUJPO "E4FSWFS Ϣʔβ ࠂೖߘऀ
Slide 20
Slide 20 text
։ൃͷྲྀΕ • ༷ΛܾΊΔ • ੑ࣭ཁٻΛߟྀ • ઃܭ • ੑೳݟੵΓɺΞʔΩςΫνϟઃܭ • ߏங • ઃܭʹج͍࣮ͯࡍʹߏஙΛߦ͏ • ͯͳͰchefΛ͏͜ͱ͕ଟ͍
Slide 21
Slide 21 text
ΞʔΩςΫνϟ %BUBCBTF 4UPSBHF "QQ $BDIF ࠂೖߘ $BDIF 1SPYZ ࠂ৴αʔό "QQ ࠂཧαʔό %BUBCBTF ϦΫΤετ 4FBSDI &OHJOF -PH 'PSXBSEFS ΤϯυϢʔβ ࠂೖߘऀ όον ੈཧ͞Εͨ Ωϟογϡͷ࡞ ϨϓϦέʔγϣϯ ϩάૹ
Slide 22
Slide 22 text
3 ࠂ৴γεςϜͷཁٻͱ ҆ఆӡ༻ɺύϑΥʔϚϯε্ ͷͨΊͷऔΓΈ
Slide 23
Slide 23 text
ࠂ৴γεςϜͷཁٻ • ϨΠςϯγཁٻ • 50 msec or dieʢۀքج४ʣ • ߴ͍Մ༻ੑ • ৴Կ͕͋ͬͯʮઈରʹʯࢭΊ͍͚ͯͳ͍ • ϩάૹͷ৴པੑ • ϩάͷॏෳɺܽଛجຊతʹڐ͞ΕΔͷͰͳ͍ "QQMJDBUJPO "E4FSWFS Ϣʔβ ࠂೖߘऀ NTFD
Slide 24
Slide 24 text
ֶੜ͔࣌ΒͷISUCON ͷܦݧ͕׆͖Δ
Slide 25
Slide 25 text
ෛՙࢼݧ • ϨΠςϯγཁٻͷ࣮ݱͷͨΊʹࣄલʹෛՙࢼݧ • ෛՙࢼݧπʔϧΛউखʹಋೖ • ຊ൪ϦϦʔεલʹνʔϜͰISUCON • ຊ൪૬ͷstagingڥͱ ෛՙࢼݧπʔϧ༻ͷαʔόΛ४උ • ϨΠςϯγΛ֬ೝ͠ͳ͕ΒϘτϧωοΫΛվળ • ܧଓతʹվળΛߦ͑ΔΑ͏ʹCIʹΈࠐΉ
Slide 26
Slide 26 text
ෛՙࢼݧπʔϧ ͜ͷลΛݟͳ͕ΒνϡʔχϯάʢҰྫͰ͢ʣ
Slide 27
Slide 27 text
ʮΦϖϨʔγϣϯͰΛकΓɺ ϓϩάϥϛϯάͰΛͱΔʯ IUUQCMPHZVVLJPFOUSZXFCPQFSBUJPOTJTVDPO
Slide 28
Slide 28 text
ϘτϧωοΫͷಛఆ • γεςϜΛ؍͠ཧղ͢Δͷ͕࠷ॳ • ΞϓϦέʔγϣϯΤϯδχΞʹదͳվળཁٻΛग़͢ • ϘτϧωοΫͷղੳ • ಛఆʹ༻͍Δπʔϧ • ίϚϯυ…top, dstat, strace, perfͳͲ • MySQLͷεϩʔΫΤϦ…pt-query-digestͳͲ • ϓϩϑΝΠϥ…NYTProfͳͲͰ࣮ߦ࣌ؒ
Slide 29
Slide 29 text
ΞϓϦέʔγϣϯϩδοΫͷ ϘτϧωοΫͷಛఆ • NYTProfͷΑ͏ͳϓϩϑΝΠϥ • ࣌ࠁͷൺֱจࣈྻͷ࣌ࠁͷม͕͍ • ϋογϡͷੜΞϧΰϦζϜ͕͍
Slide 30
Slide 30 text
DBͳͲଓํࣜͷΦʔόʔϔου • ॳ࣮ίετͳͲͷཧ༝͔Βଓํࣜ • ෛՙࢼݧΛਐΊ͍ͯ͘͏ͪʹΦʔόʔϔου͕ അࣛʹͳΒͳ͍͜ͱ͕໌ • straceͰৄࡉͳॲཧΛ͏ • ৗ࣌ଓํࣜʹมߋ • DBଓपΓͷΦʔόʔϔουݮ • ΞϓϦέʔγϣϯͰ͔ͬ͠ΓΤϥʔϋϯυϦϯά͢Δඞཁ
Slide 31
Slide 31 text
ϩάͷॻ͖ࠐΈपΓ • ࠂ৴ͷಛ৭ • ࢀর͕ଟ͍ͷʹॻ͖ࠐΈ͕ൃੜ͢Δ • ͦͦѻ͏σʔλΛݮΒ͢ʢσʔλߏͷʣ • ϩάॻ͖ࠐΈͷΦϒδΣΫτΩϟογϡ • ݱঢ়Ͱ͜͜ͰͨͬͯΔ • ϑΝΠϧͷॻ͖ࠐΈ෦ͰϩοΫ
Slide 32
Slide 32 text
ͦͷଞ • PlackʢAppαʔόʣͷύϥϝʔλௐͳͲ • ϓϩηεΛੜ͖ͤ͞Δ • workerίΞఔʹ • ࠷ऴతʹGazelleʹ • MySQL indexվળ • Χʔωϧύϥϝʔλνϡʔχϯά • reuse, recycle porttcp_fin_timeoutͳͲ • Մ༻ੑɺϩάૹͷ৴པੑΛߴΊΔ
Slide 33
Slide 33 text
લ·ͱΊ • ·ͱΊ • WebγεςϜͷجຊతͳΈ • ࠂ৴γεςϜͷੑ࣭ͱઃܭ • ߴԽͷͨΊʹͬͨ͜ͱ • αʔϏεӡ༻ͷָ͠͞ • αʔϏεͷੑ࣭Λߟྀͯ͠࠷దղΛ୳Δͷָ͕͍͠ • ֶΜٕͩज़ͳͲ͕ͦͷ··݁Ռͱͯ͠ݱΕΔ
Slide 34
Slide 34 text
ج൫ฤ
Slide 35
Slide 35 text
ΞδΣϯμ • ࣗݾհ • طଘͷͯͳͷαʔό,ωοτϫʔΫج൫ • ϩʔυόϥϯγϯά෦Λհ • ج൫ΛΔָ͠͞(͕࣌ؒ͋Ε)
Slide 36
Slide 36 text
ࣗݾհ
Slide 37
Slide 37 text
ࣗݾհ • id:masayoshi • 20164݄ೖࣾ • େֶ࣌ͷݚڀςʔϚSDNͳͲωοτϫʔΫ • ֶੜ࣌MSPͰαʔόࢹͷΞϧόΠτ • ݱࡏWebΦϖϨʔγϣϯΤϯδχΞͷج൫νʔϜ
Slide 38
Slide 38 text
ͯͳͷΠϯϑϥࣄ
Slide 39
Slide 39 text
ͯͳͷΠϯϑϥࣄ • αʔϏε͕ଟ͍ • 10αʔϏεҎ্ • ଉͷ͍αʔϏε • 10Ҏ্ͷαʔϏε • ςΩετϕʔεͷWebαʔϏε͕جຊ
Slide 40
Slide 40 text
αʔϏε͕ଟ͍ • 1αʔϏεʹෳϩʔϧ • Proxy, APP, DB,… • αʔϏε ✕ ϩʔϧʹΑΔαʔόͷ૿Ճ • Ծαʔό͚ͩͰ1000Ҏ্ (ਓ8ਓ) • αʔϏεͷଟ༷ੑ • ϒοΫϚʔΫ, ϒϩά, ࠂ৴, Mackerel … • αʔϏε͝ͱʹϩʔϧมԽ͢Δ
Slide 41
Slide 41 text
ଉͷ͍αʔϏε • 10Ҏ্ͷαʔϏε • ͯͳϒοΫϚʔΫ, ͯͳਓྗݕࡧͳͲ • 10ج൫ʹͱ͔ͬͯͳΓͷมԽ͕͋Δ • ԾԽɺΫϥυɺίϯςφ • ϛυϧΣΞͷଟ༷Խ
Slide 42
Slide 42 text
ςΩετϕʔεͷWebαʔϏε • 1ճͷΞΫηεͷίωΫγϣϯ͕ଟ͍ • ProxyͷίωΫγϣϯॲཧॏཁ • HTTP2ͳͲͰվળͭͭ͋͠Δ • 1ΞΫηεͷ௨৴ྔଟ͘ͳ͍ • ετϦʔϛϯάͳͲͱҧ͏ • ϦΫΤεταΠζ << ϨεϙϯεαΠζ • େମͷWebαʔϏεϨεϙϯεͷ΄͏͕େ͖͍
Slide 43
Slide 43 text
ͯͳͷج൫͍Ζ͍Ζ • ϋδϯά + Ϋϥυ • Debian + Xen ͰͷαʔόԾԽ • Chef, CapistranoͰͷϓϩϏδϣχϯά • MackerelͰͷࢹɺαʔόཧ • Linux LVSͷෛՙࢄ
Slide 44
Slide 44 text
ͯͳͷωοτϫʔΫج൫
Slide 45
Slide 45 text
ཁ݅ • ωοτϫʔΫ,αʔόͷॴΛറΒΕͨ͘ͳ͍ • αʔϏεɺϩʔϧͱ’ॴ’͕ґଘͨ͘͠ͳ͍ • ֤ϩʔϧෛՙࢄɺԽग़དྷΔΑ͏ʹ͍ͨ͠ • ProxyେྔͷίωΫγϣϯΛࡹ͖͍ͨ • ͔͠͠ෳࡶ͗͢ΔΈݏͩ
Slide 46
Slide 46 text
/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
Slide 47
Slide 47 text
/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 ཧతͳஔΛҙࣝ ωοτϫʔΫΛҙࣝ ཧαʔόΛҙࣝ
Slide 48
Slide 48 text
/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 Ϧιʔε͕ڞ༗Ͱ͖ͳ͍
Slide 49
Slide 49 text
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
Slide 50
Slide 50 text
ϩʔϧͱLBͱωοτϫʔΫ
Slide 51
Slide 51 text
ϩʔϧͱϩʔυόϥϯα • ϩʔϧؒͷ௨৴جຊతʹLBΛ௨͢ • ෛՙࢄɺԽ͕ඞཁͳͨΊ • Linux LVS + KeepalivedΛ༻ (3ํࣜ͋Δ) • LB͕ෳωοτϫʔΫʹࢄͰ͖ΕΑ͍ • LBͷԼجຊతʹಉҰωοτϫʔΫ • L4ɺL7ͷLBऴ͢Δ͜ͱͰผωοτϫʔΫՄ • ͨͩ͠ऴ͢ΔͷͰ͘ͳΓ͕ͪ
Slide 52
Slide 52 text
LVSΛͬͨϩʔυόϥϯα(NAT) • Γύέοτ͕ूத͢Δ • ࡹ͚ΔίωΫγϣϯ͕গͳ͍ • IPϔομΛॻ͖͑ΔͷͰ͍ => ͯͳͷ༻్ʹ߹Θͳ͍ ୯Ұ*1 7*1 ෳ*1 3*1
Slide 53
Slide 53 text
LVSΛͬͨϩʔυόϥϯα(DR) • Γύέοτ͕ूத͠ͳ͍ • ࡹ͚ΔίωΫγϣϯ͕ଟ͍ • IPϔομΛॻ͖͑ͳ͍ͷͰߴ => Proxy͖ "31Ͱղܾͯ͠.BDΞυϨεͷॻ͖͑ͷΈ
Slide 54
Slide 54 text
LVSΛͬͨϩʔυόϥϯα(TUN) • Ϩεϙϯεύέοτ͕ूத͠ͳ͍ͷDRͱಉ͡ • IPϔομΛΧϓηϧԽ͢ΔͷͰผωοτϫʔΫʹసૹՄೳ • ϦΫΤετύέοτͷMSS͕Լ͕Δ => ProxyҎ֎͖ c c ୯Ұ*1 7*1 *1JO*1
Slide 55
Slide 55 text
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ɹ
Slide 56
Slide 56 text
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
Slide 57
Slide 57 text
4FSWJDF" 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %# -PBE#BMBODFSɹ1SPYZ 4FSWJDF# 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %# -PBE#BMBODFSɹ"QQ -PBE#BMBODFSɹ%#
Slide 58
Slide 58 text
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
Slide 59
Slide 59 text
4FSWJDF" 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %# -PBE#BMBODFSɹGPSQSPYZ 4FSWJDF# 1SPYZ "QQ %# 1SPYZ 1SPYZ "QQ "QQ %# %# -PBE#BMBODFSɹGPS"QQ %# ʜ $BDIF $BDIF $BDIF
Slide 60
Slide 60 text
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
Slide 61
Slide 61 text
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
Slide 62
Slide 62 text
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
Slide 63
Slide 63 text
ͯͳͷϩʔυόϥϯαํࣜͷબ • جຊLVS/TUNΛ༻͢Δ • ཧαʔόɺωοτϫʔΫʹґଘͤͣஔ • ProxyͷલஈʹLVS/DRΛ༻͢Δ • ࡹ͘ίωΫγϣϯ͕ଟ͍ • άϩʔόϧIPΞυϨεΛѻ͏ • ϦΫΤεταΠζ << ϨεϙϯεαΠζ ͕جຊ
Slide 64
Slide 64 text
ج൫ٕज़ͷબ • ͯͳͷϋδϯάڥͷෛՙࢄͷҰ෦Λհ • ৽ٕज़Ͱͳ͍͕͔ͬ͠Γࢧ͍͑ͯΔ • વෆຬ͋ΔͷͰܗͰͳ͍ • ඞཁͳཁ݅,Πϯϑϥࣄ֤ࣾҟͳΔ • पΓྲྀߦΓʹৼΓճ͞Ε͗͢ͳ͍ • దࡐదॴɺແཧ͗͢͠ͳ͍બΛ৺͕͚Δ
Slide 65
Slide 65 text
ج൫ΛΔָ͠͞
Slide 66
Slide 66 text
ج൫ΛΔָ͠͞ • େنͳγεςϜΛߟ͑Δָ͠͞ • جૅతͳٕज़͕ษڧͰ͖Δ • OS,ωοτϫʔΫ,ࢄγεςϜ,... • Ϋϥυͷத࣮͕૾ग़དྷͨΓ͢Δ • టष͋͞Δ • ݕূόά౿ΜͩΓͱ͔…
Slide 67
Slide 67 text
ྫ͑…
Slide 68
Slide 68 text
Linuxϧʔλ • ͯͳͰήʔτΣΠͳͲʹVyOSΛ͍ͬͯΔ • సૹ͚ͩͳΒ200Kpps 10Gbps ग़Δ • ςΩετϕʔεͷWebαʔϏεͳΒे • OSSͳͲ͕ͦͷ··͑Δ • Chef, GitͳͲͷߏཧπʔϧ • MackerelͰࢹ͢ΕSNMP͍Βͣ
Slide 69
Slide 69 text
LinuxωοτϫʔΫ %PN /*$ 1IZTJDBM -JOVY #SJEHF 9FO)ZQFSWJTPS 7. FUI WJG FUI /*$ 1IZTJDBM -JOVY #SJEHF 7. WJG FUI
Slide 70
Slide 70 text
LinuxωοτϫʔΫͷߴԽ • ݱঢ়VMؒͩͱ3~4Gpbsఔ • ΦϑϩʔσΟϯά (VMؒͰ10GbpsՄೳ) • TSO (TCP Segmentation Offload), • LRO (Large Receive Offload) • SR-IOV • AWSͰ༻Ͱ͖Δ
Slide 71
Slide 71 text
XenϋΠύʔόΠβʔͱNUMA %PN 1IZTJDBM %PN6 9FO)ZQFSWJTPS .FN$POUSPMMFS .FN$POUSPMMFS σʔλ $16 $16 %PN6 %PN6 σʔλ σʔλ
Slide 72
Slide 72 text
Placing the guest automatically xen 4.5 %PN 1IZTJDBM %PN6 9FO)ZQFSWJTPS .FN$POUSPMMFS .FN$POUSPMMFS σʔλ $16 $16 %PN6 %PN6 σʔλ σʔλ
Slide 73
Slide 73 text
ͦͷଞͷͯͳͷج൫ͷ͓ • ͯͳͷϩάӡ༻ ͜Ε·Ͱͱ͜Ε͔Β • 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
Slide 74
Slide 74 text
ͬͱฉ͖͍ͨʂͱ͍͏ਓ… • Mackerelϒʔε Εͬͭ͝ʔ
Slide 75
Slide 75 text
ͬͱͬͱΓ͍ͨʂͱ͍͏ਓ…
Slide 76
Slide 76 text
Πϯϑϥ͕͖ͳਓ ج൫͕͖ͳਓ ઈࢍ࠾༻ڧԽதʂ IUUQIBUFOBDPSQKQSFDSVJUGSFTIPQFSBUJPOFOHJOFFS