Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
େنαʔϏεٕज़ೖ ୈ2ճ ISUCONରࡦษڧձ 2017/8/4
Slide 2
Slide 2 text
֓ཁ • શ෦Ͱ15ճ͋Γ·͕͢, 1ճύε͠·͢. • ඞཁͦ͏ͳͱ͜ΖΛ͔͍ఠΜͰհ͠·͢. • ίϥϜجຊతʹޙ͔ΒΓ·͢. • ࢀߟॻɿ Web։ൃऀͷͨΊͷ େنαʔϏεٕज़ೖ
Slide 3
Slide 3 text
ୈ2ճ େنσʔλॲཧೖ - ϝϞϦͱσΟεΫ, WebΞϓϦέʔγϣϯͱෛՙ -
Slide 4
Slide 4 text
େنσʔλಛ༗ͷࣄΛΔ • 2ʙ5ճେنσʔλͷѻ͍ํΛΔ. ճ ༰ ճ ॲཧͷجຊͱͳΔࣝ ճ 04ͷΩϟογϡ ճ .Z42-ͷӡ༻ ճ େنΞϓϦ։ൃʹ͍ͭͯ
Slide 5
Slide 5 text
Lesson4 ͯͳϒοΫϚʔΫͷ σʔλن
Slide 6
Slide 6 text
Lesson4 • ͯͳϒοΫϚʔΫʹ, 3ԯ5000ສ݅ͷσʔ λ͕ೖ͍ͬͯΔΒ͍͠. • ࠷ॳʹΑ͛͘Δ͜ͱ͕͋ΔQueryʮSELECT * FROM ʯΛ͛Δͱ, ͨΓલ͚ͩ ͲԠ͕ฦͬͯ͜ͳ͍.
Slide 7
Slide 7 text
Lesson5 େنσʔλॲཧͷॴ
Slide 8
Slide 8 text
Կ͕͍͠ͷ͔ • σʔλ͕େنա͗ͯϝϞϦʹࡌΒͳ͍. • ϝϞϦʹࡌΒͳ͍ͷͰ, σΟεΫঢ়Λݕࡧ͠ ͍ͯ͘͜ͱʹͳΔ. • I/O͕, σΟεΫ>>>ϝϞϦͳͷͰ͍.
Slide 9
Slide 9 text
ϝϞϦͱσΟεΫͷࠩ • ϝϞϦ্Λ୳ࡧ͢ΔͷͱσΟεΫΛ୳ࡧ͢Δ ͷʹͲͷ͘Β͍ͷ͕ࠩ͋Δͷ͔. • 10^5͔Β10^6͘Β͍ͷ͕ࠩ͋Δ. • ʂʂσΟεΫϝϞϦͷ10^6ഒ͔͔Δʂʂͱ ͍͏ײ֮Λ࣋ͱ͏.
Slide 10
Slide 10 text
ԿނσΟεΫ͍ͷ͔ • ͜ΕྲྀੴʹৗࣝͳͷͰলུ. • ϝϞϦͳΒϚΠΫϩඵͷΦʔμʔ͕ͩ, σΟεΫͰϛϦ ඵͷΦʔμʔͳͷͰ. • ϝϞϦͱCPUૣ͍όεͰͭͳ͕͍ͬͯΔ͕, σΟεΫͱ CPUϝϞϦͱCPUʹൺΔͱ͔ͳΓ͍. • ϝϞϦͱσΟεΫͷؾ࣋ͪʹͳͬͯΞϓϦΛ࡞Ζ͏.
Slide 11
Slide 11 text
ԿނσΟεΫ͍ͷ͔ HDDಡΈग़͢·Ͱͷఔʹ͕͔͔࣌ؒΔ
Slide 12
Slide 12 text
Lesson6 εέʔϦϯάͷཁॴ
Slide 13
Slide 13 text
εέʔϦϯά, εέʔϥϏϦςΟ • ෛՙࢄΛ͢Δ. • ڧ͍PCͰԥΔ͜ͱΛʮεέʔϧΞοϓʯ • ҆ՁͰී௨ͷੑೳͷϋʔυΣΞΛฒྻʹฒ ͯγεςϜશମͷੑೳΛΞοϓͤ͞Δ͜ͱ ΛʮεέʔϧΞτʯ
Slide 14
Slide 14 text
εέʔϦϯάͷཁॴ • HTTPϦΫΤετΛड͚, DBαʔόʹ͍߹ΘͤΛ͠, Ճͯ͠ฦ͢Α͏ͳॲཧCPUʹͷΈෛՙ͕͔͔Δ. • ͜ͷΑ͏ͳॲཧΛ͢ΔαʔόΛΞϓϦέʔγϣϯαʔ όʢAPαʔόʣͱ͍͏. • APαʔόʹରͯ͠, DBαʔόI/Oෛՙ͕େ͖͔͔ͬ͘ ͯ͘Δ.
Slide 15
Slide 15 text
WebΞϓϦέʔγϣϯͱෛՙ WebΞϓϦέʔγϣϯ3ߏ APαʔό ϓϩΩγ DBαʔό ᶃϦΫΤετ ᶄϦΫΤετ ᶅI/Oൃੜ ᶆϨεϙϯε $16ͷॲཧ جຊతʹσʔλΛࢄ ͍ͯ࣋ͬͯ͠ΔΘ͚Ͱͳ͍ͷͰ Λ૿͚ͩ͢ͰεέʔϦϯάՄೳ
Slide 16
Slide 16 text
WebΞϓϦέʔγϣϯͱෛՙ WebΞϓϦέʔγϣϯ3ߏ APαʔό ϓϩΩγ DBαʔό ᶃϦΫΤετ ᶄϦΫΤετ ᶅI/Oൃੜ ᶆϨεϙϯε ۃͳ Λ૿ͯ͠ϩʔυόϥϯ αʹ͍͍ײ͡ʹৼΓ͚ͯΒ͏͚ͩ Ͱྑ͍ͱ͜Ζ͋Δ
Slide 17
Slide 17 text
WebΞϓϦέʔγϣϯͱෛՙ WebΞϓϦέʔγϣϯ3ߏ APαʔό ϓϩΩγ DBαʔό ᶃϦΫΤετ ᶄϦΫΤετ ᶅI/Oൃੜ ᶆϨεϙϯε ͜ͷߏʹDBΛ1ͭՃ͢Δ͜ͱΛߟ͑Δ.
Slide 18
Slide 18 text
WebΞϓϦέʔγϣϯͱෛՙ WebΞϓϦέʔγϣϯ3ߏ APαʔό ϓϩΩγ DBαʔόᶃ ᶃϦΫΤετ ᶄϦΫΤετ ᶅI/Oൃੜ ᶆϨεϙϯε DBαʔόᶄ %#Λ૿ͨ࣌͠ %#ᶃͱ%#ᶄ ΛͲ͏ͬͯಉظΛͱΔͷ͔ ͱ͍͏͕ग़ͯ͘Δ ॻ͖ࠐΈͷࢄ͍͠ ???
Slide 19
Slide 19 text
DBͷεέʔϥϏϦςΟϠό͍ • I/O͕ൃੜ͢Δͱ͜ΖͷεέʔϥϏϦςΟΛ֬อ͢Δͷ ͍͠. • ͦͷ্σΟεΫͷI/O͕ඇৗʹ͍ͷͰ, I/O͕ͨ͘ ͞Μൃੜ͢ΔΑ͏ͳͷʢͨΓલ͕ͩʣ͘ͳΔ. • σʔλ͕େ͖͘ͳΕͳΔ΄ͲσΟεΫ্Ͱͷ୳ࡧ͕ ૿͑ΔͷͰ͘ͳ͍ͬͯ͘.
Slide 20
Slide 20 text
DBͷεέʔϥϏϦςΟϠό͍ • ҆қʹʮ͕͍͔Βαʔό૿ͤΑʯͳ ͲͱӡӦʹݴ͍͚ͬͯͳ͍. • ͱʹ͔͘I/O͔ͬ͠Γߟ͑Α͏Ͷͱ͍͏͓
Slide 21
Slide 21 text
Lesson7 େنσʔλΛѻ͏ͨΊͷ جૅࣝ
Slide 22
Slide 22 text
3ͭͷצॴ 1. ·ͣ͡ΊʹΦϯϝϞϦͰͰ͖ͳ͍͔ߟ͑Δ. • σʔλ͕গͳ͚ΕϝϞϦʹ͍ͤͯ͑ͬ ͯΕ͍͍. 2. ΞϧΰϦζϜΛֶΜͰѹతΛग़ͦ͏. 3. σʔλѹॖݕࡧٕज़Λ͏·͓͘͏.
Slide 23
Slide 23 text
ΦϯϝϞϦʹ͢Δ • σΟεΫ͍. • γʔΫճΛͳΔ͘ݮΒ͢. • ہॴੑΛ׆͔͢.
Slide 24
Slide 24 text
ΞϧΰϦζϜΛվྑ • શ୳ࡧ, ઢܗ୳ࡧ͢ΔΑΓར༻ՄೳͳΒೋ ୳ࡧΛ͓͏.(nlog(n)ͷΦʔμʔ) • ͬͺΓͶΞϧΰϦζϜͬͯͷॏཁ
Slide 25
Slide 25 text
ࡾେલఏࣝ 1. OSͷΩϟογϡ 2. ࢄΛߟྀͨ͠RDBMSͷӡ༻ 3. ΞϧΰϦζϜͱσʔλߏΛͲ͏ͬͯద༻ ͢Δ͔. ͜ͷ3ͭ͜Ε͔Β͖ͬͯ·͢
Slide 26
Slide 26 text
ίϥϜ
Slide 27
Slide 27 text
Linux୯Ұϗετͷෛՙ
Slide 28
Slide 28 text
ਪଌ͢Δͳ, ܭଌͤΑ • ਪଌΛͤͣܭଌΛͯ͠ϘτϧωοΫΛ୳ͦ͏. • ISUCONͰܭଌඇৗʹॏཁͳςΫχοΫ. • ϘτϧωοΫΛऔΓআ͍ͯຊདྷͷੑೳΛऔΓ ͦ͏.
Slide 29
Slide 29 text
ϘτϧωοΫΛݟۃΊΔྲྀΕ • ϩʔυΞϕϨʔδΛݟΔ • CPU, I/OͷϘτϧωοΫΛݟΔ • ͜ͷ2ͭͷ࡞ۀΛߦ͏.
Slide 30
Slide 30 text
ϩʔυΞϕϨʔδΛݟΔ • ϩʔυΞϕϨʔδΛݟΔ • ϩʔυΞϕϨʔδʮγεςϜશମͷෛՙঢ় گΛࣔ͢ࢦඪʯ • ϩʔυΞϕϨʔδ͚ͩͰϘτϧωοΫʹ ͳ͍ͬͯΔՕॴΘ͔Βͳ͍ͷͰ, ख͕͔Γ ʹͯ͠ௐࠪ͢Δ.
Slide 31
Slide 31 text
CPU, I/Oͷ͍ͣΕ͔͕Ϙτϧ ωοΫ͔Λ୳͢ • ϩʔυΞϕϨʔδ͕ߴ͔ͬͨ߹, ͦͷݪҼ͕ CPUͳͷ͔I/Oͳͷ͔Λ୳͢. • sar, vmstatΛͬͯ୳͢.
Slide 32
Slide 32 text
CPUෛՙ͕ߴ͍߹ • ϢʔβʔϓϩάϥϜ͕ѱ͍ͷ͔, γεςϜͦͷ ͷ͕ѱ͍ͷ͔ΛtopsarͰ֬ೝ. • psΛͬͯϓϩηεͷঢ়ଶΛݟΔ. • straceoprofileͰϓϩϑΝΠϦϯά͍ͯ͘͠. • ϓϩϑΝΠϥ৭ʑ͋ΔͷͰ߹͏ͷΛ୳͢
Slide 33
Slide 33 text
CPUෛՙ͕ߴ͍߹ • ҰൠʹCPUʹෛՙ͕͔͔ͬͯΔͷ • CPUҎ֎͕ϘτϧωοΫʹͳ͍ͬͯͳ͍. • αʔόͷ૿ڧͳͲͰରԠ. • ϓϩάϥϜͷͳͲʹΑΓ, ඞཁҎ্ͷෛՙ͕CPUʹ͔ ͔͍ͬͯΔ. • ϓϩάϥϜΛมߋ.
Slide 34
Slide 34 text
I/Oෛՙ͕ߴ͍߹ • ϓϩάϥϜதͷI/O͕ଟ͍ • σΟεΫͷεϫοϓ͕େྔʹൃੜ͍ͯ͠Δ͍ͤ Ͱ͍ • sarvmstatͰ୳ͦ͏.
Slide 35
Slide 35 text
I/Oෛՙ͕ߴ͍߹ • εϫοϓ͕େྔʹൃੜ͍ͯ͠Δ߹ • ಛఆͷϓϩηε͕༗ͯ͠ͳ͍͔ௐΔ. • ϓϩάϥϜ͕ϝϞϦΛେྔʹফඅ͢ΔΑ͏ ͳͷͳΒमਖ਼͢Δ. • ϝϞϦΛ૿ઃ͢Δ.
Slide 36
Slide 36 text
ύϑΥʔϚϯενϡʔχϯά • ༩͑ΒΕͨίϯϐϡʔλ͕ͦΕҎ্ͷͰ ܭࢉΛ͢Δ͜ͱͰ͖ͳ͍. • 10ඵ͔͔Δॲཧʹ100ඵඅ͍ͯ͠ΔΑ͏ͳ Β, ͦΕΛऔΓআ͘͜ͱ͕ग़དྷΔ͔Ͳ͏͔͕ॏ ཁʹͳͬͯ͘Δ.
Slide 37
Slide 37 text
ೋछྨͷෛՙͱ WebΞϓϦέʔγϣϯ
Slide 38
Slide 38 text
ෛՙͷछྨ • ෛՙେ͖͚ͯ͘2ͭʹྨ͞ΕΔ. • CPUෛՙ • I/Oෛՙ
Slide 39
Slide 39 text
CPUෛՙ • CPUෛՙͱ͍͏ͷ, ೖग़ྗͰͳ͘CPU্Ͱ ͷܭࢉʹΑͬͯෛՙ͕͔͔Δ͜ͱ.ʢܭࢉྔ͕ ଟ͍ʣ • CPUόϯυͳϓϩάϥϜͱݺΕΔ.
Slide 40
Slide 40 text
I/Oෛՙ • σΟεΫʹେྔͷσʔλ͕༗Γ, ͦͷத͔Β తͱ͢ΔσʔλΛऔΓग़͢ϓϩάϥϜ. • ͜ͷCPUͷੑೳͰͳ͘, σΟεΫͷੑ ೳʹґଘ͢Δ. • I/OόϯυͳϓϩάϥϜͱݺΕΔ.
Slide 41
Slide 41 text
CPUෛՙͱI/Oෛՙ • APαʔό(ϦΫΤετʹରͯ͠దͳ݁ՌΛฦ ͢αʔό)CPUόϯυͰ͋Δ. • ҰํͰ, DBαʔόσΟεΫ͔Βରͷσʔλ ΛऔΓग़͢ͷͰ͋Γ, CPUෛՙΑΓI/Oෛ ՙͷํ͕େ͖͘ͳΔͨΊI/OόϯυͰ͋Δ.
Slide 42
Slide 42 text
ϚϧνλεΫOSͱෛՙ • ϚϧνλεΫͱ͍͏ͷ, ෳͷλεΫΛ͍ ִؒͰΓସ͑ͯॲཧ͠, ͔͋ͨෳ͕ฒྻ ʹಈ͍ͯΔΑ͏ʹݟͤΔٕज़. " # $ " ࣌ؒ
Slide 43
Slide 43 text
ϚϧνλεΫOSͱෛՙ • λεΫ͕૿͑ΕͦΕ͚͕ͩͪ͘ͳΔ. • ࣮ߦͪͷ࣌ؒϓϩάϥϜͷ࣮ߦԆͱ͠ ͯݱΕͯ͘Δ. topίϚϯυΛ࣮ߦ
Slide 44
Slide 44 text
ϩʔυΞϕϨʔδ͕ใࠂ͢Δ ෛՙͷਖ਼ମ • ϋʔυΣΞCPUʹҰఆͷपظͰλΠϚׂΓࠐ ΈΛൃੜ͍ͤͯ͞Δ. • λΠϚׂΓࠐΈ͝ͱʹϩʔυΞϕϨʔδ͕ܭࢉ͞ Ε͍ͯΔ. • λΠϚׂΓࠐΈ͕ൃੜͨ͠ͱ͖ʹI/OͪλεΫΛ ͑, ୯Ґ࣌ؒ͋ͨΓͷฏۉΛද͍ࣔͯ͠Δ.
Slide 45
Slide 45 text
ϩʔυΞϕϨʔδ͕ใࠂ͢Δ ෛՙͷਖ਼ମ • ϩʔυΞϕϨʔδ͕ใࠂ͢Δෛՙ, ҎԼͷ2ͭͰ ͋Δͱߟ͑ΒΕΔ. • CPUͷ࣮ߦݖݶ͕༩͑ΒΕΔͷΛ͍ͬͯΔϓ ϩηε. • σΟεΫI/O͕ྃ͢ΔͷΛ͍ͬͯΔϓϩηε
Slide 46
Slide 46 text
CPU༻ͱI/Oͪ
Slide 47
Slide 47 text
CPU༻ͱI/Oͪ • աෛՙͰγεςϜͷύϑΥʔϚϯε͕ྼԽ͢Δ ݪҼͱͯ͠, ҎԼͷ2ͭͰ͋Δ. 1. CPUෛՙ 2. I/Oෛՙ • ͲͪΒʹݪҼ͕͋Δͷ͔ௐΔඞཁ͕͋Δ.
Slide 48
Slide 48 text
sarίϚϯυΛ͏ • sar(System Activity Reporter)ίϚϯυΛ͏ ͱ, CPU༻I/OͪΛ֬ೝ͢Δ͜ͱ͕ ग़དྷΔ. • ͳΜ͔macOSʹsarແ͍Β͍͠…൵͍͠… • ksarͱ͍͏άϥϑΟΧϧͳsar͋ΔΒ͍͠
Slide 49
Slide 49 text
sarίϚϯυΛ͏(CPUෛՙฤ) • sarͷ͍͍ॴ࣌ؒܦաͱͱʹൺֱ͠ͳ͕Β ෛՙΛݟΔ͜ͱ͕ग़དྷΔ. • %userCPUͷϢʔβʔϞʔυͰͷ༻ • %systemγεςϜϞʔυͷ༻
Slide 50
Slide 50 text
sarίϚϯυΛ͏(CPUෛՙฤ) • user͕ߴ͚Εಛఆͷϓϩηε͕େྔফඅ͍ͯ͠Δ Մೳੑ. • system͕ߴ͚Ε, ίϯςΩετεΠον͕ଟൃͯ͠ ͍ΔՄೳੑ͕͋Δ. • ϩʔυΞϕϨʔδ͕ߴ͘, ͜ΕΒͷෛՙ͕ଟ͚Ε CPUϦιʔε͕ෆ͍ͯ͠Δ.
Slide 51
Slide 51 text
sarίϚϯυΛ͏(I/Oෛՙฤ) • CPUෛՙ͕ߴ͍߹%user%systemͷෛ ՙ͕ߴ͍. • I/Oෛՙ͕ߴ͍߹, %iowait͕ߴ͘ͳΔ. • ϩʔυΞϕϨʔδ͕ߴ͘, iowait͕ߴ͍߹I/ Oෛՙ͕ඇৗʹߴ͘ͳ͍ͬͯΔͱߟ͑ΒΕΔ.
Slide 52
Slide 52 text
ϚϧνCPUͱCPU༻ CPUෛՙ͕ߴ͍ྫ I/Oෛՙ͕ߴ͍ྫ
Slide 53
Slide 53 text
ϚϧνCPUͱCPU༻ • ཧతʹ1ͭͷίΞͰ͋ͬͯ, ݟ্͔͚ෳ ͷCPU͕ࡌ͞Ε͍ͯΔΑ͏ʹݟ͑Δ͕ ͋Δ(ϚϧνίΞ) • LinuxΧʔωϧCPU༻ΛͦΕͧΕͷCPU ͝ͱʹอ͍࣋ͯ͠Δ.
Slide 54
Slide 54 text
ϚϧνCPUͱCPU༻ • CPU-id͕ৼΒΕͯදࣔ͞ΕΔ. ͜ͷ߹4ί ΞͷCPUͷsarίϚϯυ(-pίΞ͝ͱʹग़ྗ) • ͜ΕCPUෛՙ͕ߴ͍ྫ
Slide 55
Slide 55 text
ϚϧνCPUͱCPU༻ • I/Oόϯυ͕ߴ͍γεςϜͩͱͲ͏ͳΔͩΖ ͏͔ʁ • -pΛൈ͍ͯදࣔͯ͠ΈΔ. ฏۉ
Slide 56
Slide 56 text
ϚϧνCPUͱCPU༻ • -pΛ͚ͯΈΔͱ… ยํͰ͕ͪൃੜ͍ͯ͠ Δ͜ͱ͕͔Δ
Slide 57
Slide 57 text
ϚϧνCPUͱCPU༻ • CPUͷ͕૿͑ͨͱ͜ΖͰ, σΟεΫ͕1͔ͭ͠ ͳ͚ΕI/OෛՙΛࢄ͢Δ͜ͱͰ͖ͳ͍. • ϚϧνίΞͳڥʹ͓͍ͯෛՙΛݟΔ߹, ίΞ ͦΕͧΕʹ͍ͭͯݟ͍ͯ͘ඞཁ͕͋Δ.