Slide 1

Slide 1 text

PHPer޲͚WebΞϓϦέʔγϣϯͷ ύϑΥʔϚϯενϡʔχϯάೖ໳ PHPΧϯϑΝϨϯεؔ੢2018 ߴڮါޗ

Slide 2

Slide 2 text

• KLabͰιʔγϟϧήʔϜΞϓϦέʔγϣϯͷ։ൃ • αʔόʔαΠυΤϯδχΞ • PHPɺGoɺPython • PHP Internals Book ೔ຊޠ຋༁ http://www.phpinternalsbook-ja.com ˏyugo_tak ࣗݾ঺հ

Slide 3

Slide 3 text

1. ෛՙࢼݧʹ͍ͭͯ 2. ύϑΥʔϚϯεʹ͍ͭͯͷߟ͑ํ 3. ·ͱΊ

Slide 4

Slide 4 text

͸͡Ίʹɺࠓ೔࿩͞ͳ͍͜ͱ

Slide 5

Slide 5 text

ࠓ೔࿩͞ͳ͍͜ͱ • ΤϯυϢʔβʔͷϢʔβʔମݧʹண໨ͨ͠৔߹ɺόοΫΤϯυͷνϡʔχϯάͷޮՌ͸ݶఆత • ϒϥ΢βͰ͸͍ΖΜͳ͜ͱΛ͍ͯ͠Δ - DOMπϦʔͷߏஙɺϨϯμϦϯάɺJavascriptͷεΫϦϓτධՁɾ࣮ߦͳͲ - ωοτϫʔΫӽ͠ʹϦιʔεΛϩʔυ͢Δॲཧ͸ͦͷҰ෦ ϑϩϯτΤϯυʹ͓͚ΔύϑΥʔϚϯενϡʔχϯά ϢʔβʔମݧΛ޲্ͤ͞Δʹ͸ ϑϩϯτΤϯυʹ͓͚Δνϡʔχϯά͸ඞཁෆՄܽ

Slide 6

Slide 6 text

๻ͨͪ͸PHPer ϑϩϯτΤϯυ͸ϑϩϯτΤϯυͰ໪࿦େࣄ͚ͩͲɺ όοΫΤϯυ͸όοΫΤϯυͰ୲อ͠ͳ͍ͱ͍͚ͳ͍͜ͱ͕͋Δɻ ϦϦʔε࣌ͷ໨ඪੑೳ͸ΫϦΞͰ͖Δʁ ྲྀೖ਺͕૿͑ͨ৔߹ɺαʔόʔ͸ෛՙʹ଱͑ΒΕΔʁ ࠓ೔͸όοΫΤϯυΤϯδχΞత؍఺ͰύϑΥʔϚϯενϡʔχϯάʹ͍ͭͯ࿩͠·͢

Slide 7

Slide 7 text

ෛՙࢼݧʹ͍ͭͯ

Slide 8

Slide 8 text

ෛՙࢼݧʹ͍ͭͯ ෛՙࢼݧͰ͸ԿΛ͢Δ΂͖͔ʁ • ໨ඪੑೳͷઃఆ MUST • ݱߦͷγεςϜߏ੒Ͱ໨ඪੑೳΛୡ੒Ͱ͖Δ͔ͷ֬ೝ(=໨ඪੑ) MUST • ݱߦͷγεςϜߏ੒Λεέʔϧͤ͞Δͱੑೳ΋εέʔϧ͢Δ͔ͷ֬ೝ(=εέʔϧੑ) MUST • γεςϜͷੑೳ͕Ͳ͜·Ͱεέʔϧ͢Δ͔ͷ֬ೝ(=ݶքੑ) SHOULD • ௕ظؒՔಇͨ͜͠ͱʹΑΔσʔλɺϩάͷ஝ੵͳͲʹΑͬͯੑೳʹ໰୊͕Ͱͳ͍͔ͷ֬ೝ(=଱ٱੑ) SHOULD

Slide 9

Slide 9 text

ෛՙࢼݧʹ͍ͭͯ ͦΜͳʹෛՙ͕͔͔Βͳ͍؀ڥ͔ͩΒෛՙࢼݧ͠ͳ͍͍ͯ͘ͱ͍͏໰୊Ͱ͸ͳ͍ɻ ·ͨɺ໨ඪੑೳΛୡ੒ͨ͠ࣄ͚ͩΛ֬ೝ͢Ε͹͍͍ͱ͍͏Θ͚Ͱ΋ͳ͍ɻ γεςϜͷ4ͭͷੑ࣭(໨ඪੑɺεέʔϧੑɺݶքੑɺ଱ٱੑ)Λ֬ೝ͓ͯ͘͜͠ͱ͕ॏཁɻ ※γεςϜͷར༻ͷ͞ΕํʹΑͬͯ͸͜ͷશͯͷੑ࣭Λඞͣࢼݧ͢Δඞཁ͸ͳ͍ɻ ྫ͑͹ࣾ಺γεςϜͳͲͷΑ͏ʹγεςϜͷར༻ऀ͕ݶఆతͰྲྀೖ਺͕҆ఆ͍ͯ͠Δ৔߹͸εέʔϧੑ͸ॏཁͰͳ͘ͳΔ͠ɺ ϓϩϞʔγϣϯΛ͓͜ͳ͏ࡍͷಛఆͷεύΠΫʹ଱͑ͤ͢͞Ε͹͍͍ͱ͍͏ঢ়گͰ͋Ε͹௕ظӡ༻Λ૝ఆͨ͠଱ٱςετ͸͍Β ͳ͍͔΋͠Εͳ͍

Slide 10

Slide 10 text

໨ඪੑೳͷઃఆ •webΞϓϦέʔγϣϯͷ୅දతͳੑೳࢦඪ - εϧʔϓοτ(req/sec) - ϨΠςϯγ •૝ఆෛՙΛܭࢉˠ໨ඪੑೳΛઃఆ •૝ఆෛՙ͸͋͘·Ͱ΋૝ఆ(DAU͕˓˓ਓɺ1ਓ͸ฏۉͯ͠˓˓ϖʔδ਺ΞΫηε͢Δ) •webͷྲྀೖ਺ͷ૝ఆ͸೉্͘͠ৼΕ͢ΔՄೳੑ͕͋Δɻ •ͦͷ্ৼΕΛߟྀͯ͠໨ඪෛՙϨϕϧ͸૝ఆෛՙΑΓ΋ߴ͘ઃఆ͓ͯ͘͠

Slide 11

Slide 11 text

γεςϜͷ໨ඪੑೳͷ֬ೝ •ઃఆͨ͠໨ඪੑೳΛୡ੒Ͱ͖Δ͔ͷ֬ೝ •ݱߦͷߏ੒ʹΑΔੑೳΛ֬ೝ͠ɺ໨ඪϨϕϧʹୡ੒Ͱ͖ͳ͍৔߹͸νϡʔχϯάΛ͓ ͜ͳ͏ •໨ඪੑೳʹୡ੒Ͱ͖ͳ͍ͱϦϦʔεɺσϓϩΠͰ͖ͳ͍ͷͰ࠷ॏཁ

Slide 12

Slide 12 text

γεςϜͷεέʔϧੑͷ֬ೝ • εέʔϧΞοϓɺεέʔϧΞ΢τͰੑೳ΋ͦΕʹԊͬͯ޲্͢Δߏ੒ʹͳ͍ͬͯΔ͔ʁ • ΞϓϦέʔγϣϯ͸มߋͤͣɺΠϯϑϥߏ੒ͷεέʔϧΞοϓ΍εέʔϧΞ΢τͷΈʹ͢Δ • Ͳ͜Λεέʔϧͤ͞Ε͹ੑೳ͕޲্͢Δ͔΋೺Ѳ͓ͯ͘͠

Slide 13

Slide 13 text

γεςϜͷݶքੑͷ֬ೝ • γεςϜͷεέʔϧੑ͕୲อͰ͖Ε͹ɺͲ͜·Ͱੑೳ͕εέʔϧͰ͖Δͷ͔΋֬ೝ͓ͯ͘͠ • ໨ඪੑೳͱεέʔϧੑೳ͕ୡ੒Ͱ͖͍ͯΕ͹جຊతʹ͸OK͕ͩɺ༨༟͕͋Ε͹΍͓͖͍ͬͯͨ

Slide 14

Slide 14 text

γεςϜͷ଱ٱੑͷ֬ೝ •௕ظՔಇͯ͠σʔλ͕஝ੵͨ͠ঢ়ଶͰͷੑೳΛ֬ೝ •σʔλྔ͕૿͑ͨ࣌ɺDB෼ׂ͸ඞཁͦ͏͔ʁ •௕ظӡ༻΋ͤͣɺσʔλ΋ͦΜͳʹͨ·Βͳ͍ͷͱ͔Ͱ͋Ε͹ඞਢͰ͸ͳ͍

Slide 15

Slide 15 text

ෛՙࢼݧͷ४උ • ෛՙࢼݧ؀ڥ • ΞϓϦέʔγϣϯ • ֎෦γεςϜ΁ͷґଘ෦෼ͷελϒԽ • ߈ܸπʔϧ(JMeterͳͲ) • ߈ܸΠϯελϯεͷ४උ • ߈ܸγφϦΦͷ࡞੒ ඞཁͳ΋ͷ • γφϦΦ༻σʔλ४උ • ϞχλϦϯάπʔϧ (XHGui,NewRelic,ganglia…) • ܭଌπʔϧ (top,vmstat,iostat,sar,netstat…) • ΞΫηεϩάαϚϦπʔϧ (kataribeɺࣗ࡞πʔϧ) • ϓϩϑΝΠϥʔ (XHProf,tideways,blaclfire…) Ҋ֎४උʹ͕͔͔࣌ؒΔͷͰܭըతʹ…ʂ

Slide 16

Slide 16 text

߈ܸπʔϧͷબఆ ߈ܸπʔϧ͸ҎԼΛຬ͍ͨͯ͠Δඞཁ͕͋Δ • ϦΫΤετͷγϡϛϨʔγϣϯ - γφϦΦΛઃఆ࣮ͯ͠ࡍͷϫʔΫϩʔυʹ͍ۙෛՙΛ͔͚Δ͜ͱ͕Ͱ͖Δ - ϦΫΤετύϥϝʔλʔΛಈతʹઃఆͰ͖Δ • γφϦΦͷ੒ޭͷ൑ఆ৚݅ͷઃఆ͕Մೳ - Ϩεϙϯεʹ˓˓ؚ͕·Ε͍ͯͳ͔ͬͨΒfailɺHTTPͷεςʔλείʔυ͕5XXܥͳΒfail • ෛՙϨϕϧͷௐ੔͕Մೳ - ߈ܸπʔϧଆͷೳྗ͕଍Γͳͯ͘े෼ͳෛՙΛ༩͑ΒΕͳ͍ͱ͍͏ͷ͸͋Γ͕ͪ • ର৅ͷγεςϜͷωοτϫʔΫతʹ͍ۙͱ͜Ζ͔ΒෛՙΛ༩͑Δࣄ͕Ͱ͖Δ - ωοτϫʔΫϨΠςϯγ͕ߴ͍ͱɺର৅γεςϜʹෛՙ͕͏·͔͔͘Βͳ͍ - ωοτϫʔΫͷঢ়گʹΑΓ݁Ռ͕҆ఆ͠ͳ͍

Slide 17

Slide 17 text

ෛՙࢼݧͷਐΊํ ϘτϧωοΫ͸͍ΖΜͳͱ͜ΖͰൃੜ͢Δ • Πϯϑϥͷߏ੒ʹ໰୊͕͋Δ • OSͷઃఆʹ໰୊͕͋Δ • webαʔόʔͷઃఆʹ໰୊͕͋Δ(KeepAliveɺϫʔΧʔ਺ɺBacklog…) • PHPͷઃఆʹ໰୊͕͋Δ(APCuɺOPCache…) • ΞϓϦέʔγϣϯͷϑϨʔϜϫʔΫͷઃఆɺར༻ํ๏ʹ໰୊͕͋Δ(debug mode) • ΞϓϦέʔγϣϯϩδοΫʹ໰୊͕͋Δ(N+1ɺDB઀ଓํ๏ɺඇޮ཰ͳॲཧ) • DBαʔόʔͷઃఆʹ໰୊͕͋Δ(Index, buffer pool size…)

Slide 18

Slide 18 text

ෛՙࢼݧͷਐΊํ Ұؾʹશ෦Λର৅ʹ͢ΔͱԿ͕ͳΜ͔ͩΘ͔Βͳ͘ͳͬͯ͠·͏! ஫ ҙ ϘτϧωοΫ͸͍ΖΜͳͱ͜ΖͰൃੜ͢Δ • Πϯϑϥͷߏ੒ʹ໰୊͕͋Δ • OSͷઃఆʹ໰୊͕͋Δ • webαʔόʔͷઃఆʹ໰୊͕͋Δ(KeepAliveɺϫʔΧʔ਺ɺBacklog…) • PHPͷઃఆʹ໰୊͕͋Δ(APCuɺOPCache…) • ΞϓϦέʔγϣϯͷϑϨʔϜϫʔΫͷઃఆɺར༻ํ๏ʹ໰୊͕͋Δ(debug mode) • ΞϓϦέʔγϣϯϩδοΫʹ໰୊͕͋Δ(N+1ɺDB઀ଓํ๏ɺඇޮ཰ͳॲཧ) • DBαʔόʔͷઃఆʹ໰୊͕͋Δ(Index, buffer pool size…)

Slide 19

Slide 19 text

ෛՙࢼݧͷਐΊํ • ੩తϑΝΠϧʹରͯ͠ͷϦΫΤετ - webαʔόʔΛؚΊͨͦΕҎԼͷϨΠϠͷઃఆ͕͓͔͍͠ͱ͜Ζ͕ͳ͍͔֬ೝ • HelloWorldΞϓϦέʔγϣϯ΁ͷϦΫΤετ - ϑϨʔϜϫʔΫͦΕࣗମͷར༻ํ๏΍ઃఆʹ͓͔͍͠ͱ͜Ζ͕ͳ͍͔֬ೝ ·ͣ͸1୆ͷwebαʔόʔʹରͯ͠ԼهͷγφϦΦΛ࣮ߦͯ͠ΈΔ ͦͷαʔόʔͷجຊੑೳΛ֬ೝͰ͖Δ

Slide 20

Slide 20 text

ෛՙࢼݧͷਐΊํ 1୆ͷwebαʔόʔʹΑΔ࠷దԽ webαʔόʔͷεέʔϧΞ΢τࢼݧ ·ͣ͸1୆Ͱ࠷దԽͯ͠ෳ਺୆ʹ͢Δͷ͕جຊ ͦͷޙɺϘτϧωοΫ͕ग़͖ͯͨͱ͜ΖΛղফ͍͖ͯ͠ɺ໨ඪੑೳͷୡ੒Λ໨ࢦ͢

Slide 21

Slide 21 text

ෛՙࢼݧͷνΣοΫ߲໨ •ର৅ͷγεςϜʹे෼ͳෛՙΛ͔͚ΒΕ͍ͯΔ͔ʁ •ϘτϧωοΫ͕ࠓͲ͜ʹ͋Δ͔೺ѲͰ͖͍ͯΔ͔ʁ - ϘτϧωοΫ͸Ҡಈ͢Δ(DBαʔόʔˠwebαʔόʔˠωοτϫʔΫଳҬͳͲ) •߈ܸπʔϧ͸CLͷৼΔ෣͍Λ࠶ݱͰ͖͍ͯΔ͔ʁ

Slide 22

Slide 22 text

ύϑΥʔϚϯεʹ͍ͭͯͷߟ͑ํ

Slide 23

Slide 23 text

ύϑΥʔϚϯεʹ͍ͭͯͷߟ͑ํ •εϧʔϓοτ •ϨΠςϯγ •ෛՙͱ޲͖߹͏࣌ͷΞϓϩʔν

Slide 24

Slide 24 text

εϧʔϓοτ •୯Ґ࣌ؒ͋ͨΓʹॲཧͰ͖Δ਺ •୅දతͳࢦඪ͸rps, qps, ppsͳͲ •ෳ਺ͷίϯϙʔωϯτͰߏ੒͞Ε͍ͯΔγεςϜͷ৔߹͸ɺ֤ίϯϙʔωϯ τͷ࠷খͷεϧʔϓοτͰγεςϜશମͷεϧʔϓοτ͕ܾ·Δ → γεςϜʹ͓͚Δεϧʔϓοτͷ࠷খ෦෼ͷͱ͜Ζ(=ϘτϧωοΫ)Λ ɹղফ͢Δ͜ͱ͕ॏཁɻطʹੑೳ͕͍͍ͱ͜ΖΛνϡʔχϯάͯ͠΋ޮՌ͕ ͳ͍

Slide 25

Slide 25 text

ϨΠςϯγ •Ԡ౴଎౓ɺॲཧ࣌ؒͷ͜ͱ •ෳ਺ͷίϯϙʔωϯτͰߏ੒͞Ε͍ͯΔγεςϜͷ৔߹͸ɺ֤ί ϯϙʔωϯτͷϨεϙϯελΠϜͷ߹ܭͰγεςϜશମͷϨεϙ ϯελΠϜ͕ܾ·Δ εϧʔϓοτͱ͸ҧͬͯɺϘτϧωοΫͱͳ͍ͬͯͳ͍෦෼Ͱ΋νϡʔχϯάͰ୹͘ग़དྷΕ͹ શମͱͯ͠ͷϨεϙϯελΠϜͷ޲্ʹ΋ͭͳ͕Γ΍͍͢

Slide 26

Slide 26 text

ϨΠςϯγͷఆٛ •Response timeͱService Time͸۠ผ͢Δ •Service time͸ॲཧʹ͔͔ͬͨ࣌ؒ •Response time͸ΩϡʔͰͷ଴ͪ࣌ؒ΋ؚΊΔ -ύέοτͷ଴ͪߦྻ -CPUͷϥϯΩϡʔͷ଴ͪߦྻ -ApacheͷListen backlogͷ଴ͪߦྻ -I/Oͷ଴ͪߦྻ •؍ଌऀ͕୭͔ʹ஫ҙ ΫϥΠΞϯτ͔ΒΈͨϨεϙϯελΠϜ͸஗͍͕WebαʔόʔͷΞΫηεϩά্తʹ͸஗ ͘ͳ͍৔߹ɺWebαʔόʔͰͷ଴ͪ࣌ؒʹ͕͔͔͍࣌ؒͬͯΔɺͳͲ

Slide 27

Slide 27 text

ϨΠςϯγͷಛੑ •ϨΠςϯγ͸ݸʑʹ͓͍ͯϢχʔΫ •͋Δૢ࡞ͷͦͷॠؒͷෛՙঢ়گʹ͓͍ͯͷԠ౴࣌ؒ •γεςϜΛߏ੒͢Δίϯϙʔωϯτͷ༷ʑͳৼΔ෣͍ʹΑΓӨڹ͞ΕΔ ֤ϨΠϠʔͷΩϟογϡͷ༗ແɺGCͷൃੜɺεϧʔϓοτͷ௿ԼͳͲ •ಉ͡ૢ࡞͕͋Δ࣌͸50msͰऴΘΔͱ͖΋͋Ε͹500ms͔͔Δ͜ͱ΋͋ Δ •ฏۉ͸͋·ΓҙຯΛͳ͞ͳ͍ •ൺֱ͸৭Μͳ৚݅ͦΖͬͯͳ͍ͱҙຯͳ͍

Slide 28

Slide 28 text

ϨΠςϯγͷ؍ଌϙΠϯτ •ϨΠςϯγͰॏཁͳͷ͸ͦͷৼΔ෣͍(෼෍)Λ؍ଌ͢Δ͜ͱ •50msʙ100msͰ༳Β͙γεςϜͱ50msʙ1000msͰ༳Β͙γεςϜͩ ͱલऀͷγεςϜͷํ͕҆ఆ͍ͯ͠Δ •Ұఆظؒʹ͓͚Δ95th percentile, 99th percentile, Max response timeͳͲΛάϥϑʹग़͓ͯ͘͠ •໨ඪੑೳͷεϧʔϓοτ·Ͱ্͍͛ͯ͘ͱϨΠςϯγ͸Ͳ͏ͳΔ ͔ʁڐ༰ൣғ಺͔ʁ

Slide 29

Slide 29 text

ෛՙͱ޲͖߹͏࣌ͷΞϓϩʔν •“ਪଌ͢ΔͳɺܭଌͤΑ” •USE Method •PHPͷ࣮ߦΞʔΩςΫνϟΛҙࣝ͢Δ

Slide 30

Slide 30 text

ਪଌ͢ΔͳɺܭଌͤΑ •ΊͪΌͪ͘Όେࣄ •ಛʹͳΕͳ͍͏ͪ͸ਖ਼ղͱͳΔνϡʔχϯάΛۮવͰ͖ͯ΋ବ໨ɻͲͷϝτϦΫε Λ஫໨͢Ε͹ͦͷνϡʔχϯάΛ͢΂͖ͩͱ͍͏ߟ͑ʹḷΓண͚ͨͷ͔ɺͦͷࢥߟ ϓϩηε͕ॏཁ •ؒҧͬͨͱ͜ΖΛνϡʔχϯά͢Δͱ༨ܭੑೳ͕མͪΔͱ͍͏͜ͱ΋͋Δ ྫ͑͹DB͕ϘτϧωοΫͳͷʹwebͷΞΫηεϩάʹه࿥͞Ε͍ͯΔϨεϙϯε λΠϜ͕஗͍ͷͰwebͷϫʔΧʔ਺Λ૿΍͢ͱશମͷੑೳ͸Ή͠ΖѱԽ͢Δɺͳ Ͳ

Slide 31

Slide 31 text

USE Method •Utilization Saturation and Errors (USE) Method By Brendan Gregg •֤Ϧιʔεͷ࢖༻཰ɺ๞࿨ɺΤϥʔʹ͍ͭͯண໨͢Δ •୅දతͳϦιʔε CPU ϝϞϦʔ σΟεΫ ωοτϫʔΫ ͳͲ Mutex File Descriptors ͳͲ ෺ཧϦιʔε ιϑτ΢ΣΞϦιʔε

Slide 32

Slide 32 text

PHPͷ࣮ߦΞʔΩςΫνϟΛҙࣝ͢Δ • Shared Nothing Architecture • ϦΫΤετຖʹ༷ʑͳ৘ใ͕ຖճॳظԽ͞ΕɺϦΫΤετಉ࢜ͷॲཧ͕͓ޓ͍ʹಠཱ͍ͯ͠Δ • લͷϦΫΤετͷॲཧ͕࣍ͷϦΫΤετʹӨڹΛ༩͑ͳ͍ • ϦΫΤετຖʹϝϞϦղ์͢ΔͷͰϝϞϦϦʔΫͳͲͷ৺഑͕গͳ͍ • ঢ়ଶΛ͍࣋ͬͯͳ͍ͷͰεέʔϧΞ΢τΛ͠΍͍͢ɻεέʔϧΞ΢τͨ࣌͠ʹϦχΞʹ ύϑΥʔϚϯε্͕͕Γ΍͍͢ɻ • ϦΫΤετॲཧຖͷΦʔόʔϔου͕େ͖͍ • ϦΫΤετΛ·͍ͨͩ৘ใͷอ͕࣋Ͱ͖ͳ͍(APCuͳͲΛར༻͠ͳ͍ͱ͍͚ͳ͍) ϝϦοτ σϝϦοτ

Slide 33

Slide 33 text

PHPͷ࣮ߦΞʔΩςΫνϟΛҙࣝ͢Δ • ͜ͷ࣮ߦΞʔΩςΫνϟʹΑΔԸܙ΋୔ࢁ͋Δ͕ɺͻͱͭͷϦΫΤετॲཧʹண໨͢ΔͱΦʔόʔ ϔου͕ଟ͘ඞཁʹͳΓຊ࣭తʹ஗͍ • ͜ͷ࣮ߦΞʔΩςΫνϟΛҙࣝͯ͠PHP͕ۤखͳࣄͰؤுΒͳ͍Α͏ʹ͠Α͏ • 1ϦΫΤετ͋ͨΓʹॲཧ͢Δ࢓ࣄΛݮΒͯ͠ɺεέʔϧΞ΢τͰԣʹͳΒ΂ͯύϑΥʔϚϯεΛ্ ͛Δͷ͕ૉ௚ͳΞϓϩʔν • PHPͩͬͯؤுͬͨΒ΍ΕΔ!

Slide 34

Slide 34 text

͓·͚

Slide 35

Slide 35 text

͓͢͢Ίॻ੶

Slide 36

Slide 36 text

ISUCON

Slide 37

Slide 37 text

ISUCON ஫໨

Slide 38

Slide 38 text

·ͱΊ

Slide 39

Slide 39 text

·ͱΊ •νϡʔχϯάͰϢʔβʔମݧͷ޲্Λ໨ࢦ͢ͳΒϑϩϯτΤϯυͷํ͕େࣄ •ෛՙࢼݧͰ͸γεςϜͷ໨ඪੑɺεέʔϧੑɺݶքੑɺ଱ٱੑΛҙࣝ͠Α͏ •εϧʔϓοτɺϨΠςϯγͳͲجຊత֓೦ͱ͓༑ୡʹͳͬͯෛՙʹ޲͖߹͓͏ •Ͱ͖Δ͚ͩ؍ଌ͢ΔบΛΈʹ͚ͭΑ͏ •ͱΓ͋͑ͣISUCONͰΑ͏

Slide 40

Slide 40 text

ͦ͏͸͍ͬͯ΋ύϑΥʔϚϯενϡʔχϯά͸೉͍͠ • webΞϓϦέʔγϣϯͷγεςϜ͸ෳࡶͳͷͰ೉ ͍͠ͷ͸౰ͨΓલ • ෳࡶͳγεςϜɺෳࡶͳϫʔΫϩʔυɻख़࿅͠ ͨਓͰ΋ݟޡΔ͜ͱ͸͠͹͠͹ɻ • ͔ͩΒͦ͜৬ਓٕ͚ͩͰͳ͘ɺ΋͏গ͠Պֶత ͳΞϓϩʔν΋ඞཁ ਖ਼͍͠؍ଌɺํ๏࿦ͷཱ֬ɺମܥԽ • ೉͍͠ʂ͚Ͳָ͍͠

Slide 41

Slide 41 text

Happy Performance Engineering!

Slide 42

Slide 42 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠