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ෛՙ͕ߴ͍৔߹ • ϢʔβʔϓϩάϥϜ͕ѱ͍ͷ͔, γεςϜͦͷ ΋ͷ͕ѱ͍ͷ͔Λtop΍sarͰ֬ೝ. • psΛ࢖ͬͯϓϩηεͷঢ়ଶΛݟΔ. • strace΍oprofileͰϓϩϑΝΠϦϯά͍ͯ͘͠. • ϓϩϑΝΠϥ͸৭ʑ͋ΔͷͰ߹͏΋ͷΛ୳͢

Slide 33

Slide 33 text

CPUෛՙ͕ߴ͍৔߹ • ҰൠʹCPUʹෛՙ͕͔͔ͬͯΔͷ͸ • CPUҎ֎͕ϘτϧωοΫʹͳ͍ͬͯͳ͍. • αʔόͷ૿ڧͳͲͰରԠ. • ϓϩάϥϜͷ๫૸ͳͲʹΑΓ, ඞཁҎ্ͷෛՙ͕CPUʹ͔ ͔͍ͬͯΔ. • ϓϩάϥϜΛมߋ.

Slide 34

Slide 34 text

I/Oෛՙ͕ߴ͍৔߹ • ϓϩάϥϜதͷI/O͕ଟ͍ • σΟεΫͷεϫοϓ͕େྔʹൃੜ͍ͯ͠Δ͍ͤ Ͱ஗͍ • sar΍vmstatͰ୳ͦ͏.

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ͷ͍͍ॴ͸࣌ؒܦաͱͱ΋ʹൺֱ͠ͳ͕Β ෛՙΛݟΔ͜ͱ͕ग़དྷΔ. • %user͸CPUͷϢʔβʔϞʔυͰͷ࢖༻཰ • %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ෛՙΛ෼ࢄ͢Δ͜ͱ͸Ͱ͖ͳ͍. • ϚϧνίΞͳ؀ڥʹ͓͍ͯෛՙΛݟΔ৔߹, ίΞ ͦΕͧΕʹ͍ͭͯݟ͍ͯ͘ඞཁ͕͋Δ.