PHPer向けWebアプリケーションのパフォーマンスチューニング入門 / web performance tuning

835ec1b8609b2f0dd90d6f1fe03daa14?s=47 yugo
July 14, 2018

PHPer向けWebアプリケーションのパフォーマンスチューニング入門 / web performance tuning

PHPカンファレンス関西2018で発表した登壇資料です。

835ec1b8609b2f0dd90d6f1fe03daa14?s=128

yugo

July 14, 2018
Tweet

Transcript

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

  2. • KLabͰιʔγϟϧήʔϜΞϓϦέʔγϣϯͷ։ൃ • αʔόʔαΠυΤϯδχΞ • PHPɺGoɺPython • PHP Internals Book

    ೔ຊޠ຋༁ http://www.phpinternalsbook-ja.com ˏyugo_tak ࣗݾ঺հ
  3. 1. ෛՙࢼݧʹ͍ͭͯ 2. ύϑΥʔϚϯεʹ͍ͭͯͷߟ͑ํ 3. ·ͱΊ

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

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

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

  7. ෛՙࢼݧʹ͍ͭͯ

  8. ෛՙࢼݧʹ͍ͭͯ ෛՙࢼݧͰ͸ԿΛ͢Δ΂͖͔ʁ • ໨ඪੑೳͷઃఆ MUST • ݱߦͷγεςϜߏ੒Ͱ໨ඪੑೳΛୡ੒Ͱ͖Δ͔ͷ֬ೝ(=໨ඪੑ) MUST • ݱߦͷγεςϜߏ੒Λεέʔϧͤ͞Δͱੑೳ΋εέʔϧ͢Δ͔ͷ֬ೝ(=εέʔϧੑ)

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

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

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

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

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

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

  15. ෛՙࢼݧͷ४උ • ෛՙࢼݧ؀ڥ • ΞϓϦέʔγϣϯ • ֎෦γεςϜ΁ͷґଘ෦෼ͷελϒԽ • ߈ܸπʔϧ(JMeterͳͲ) •

    ߈ܸΠϯελϯεͷ४උ • ߈ܸγφϦΦͷ࡞੒ ඞཁͳ΋ͷ • γφϦΦ༻σʔλ४උ • ϞχλϦϯάπʔϧ (XHGui,NewRelic,ganglia…) • ܭଌπʔϧ (top,vmstat,iostat,sar,netstat…) • ΞΫηεϩάαϚϦπʔϧ (kataribeɺࣗ࡞πʔϧ) • ϓϩϑΝΠϥʔ (XHProf,tideways,blaclfire…) Ҋ֎४උʹ͕͔͔࣌ؒΔͷͰܭըతʹ…ʂ
  16. ߈ܸπʔϧͷબఆ ߈ܸπʔϧ͸ҎԼΛຬ͍ͨͯ͠Δඞཁ͕͋Δ • ϦΫΤετͷγϡϛϨʔγϣϯ - γφϦΦΛઃఆ࣮ͯ͠ࡍͷϫʔΫϩʔυʹ͍ۙෛՙΛ͔͚Δ͜ͱ͕Ͱ͖Δ - ϦΫΤετύϥϝʔλʔΛಈతʹઃఆͰ͖Δ • γφϦΦͷ੒ޭͷ൑ఆ৚݅ͷઃఆ͕Մೳ

    - Ϩεϙϯεʹ˓˓ؚ͕·Ε͍ͯͳ͔ͬͨΒfailɺHTTPͷεςʔλείʔυ͕5XXܥͳΒfail • ෛՙϨϕϧͷௐ੔͕Մೳ - ߈ܸπʔϧଆͷೳྗ͕଍Γͳͯ͘े෼ͳෛՙΛ༩͑ΒΕͳ͍ͱ͍͏ͷ͸͋Γ͕ͪ • ର৅ͷγεςϜͷωοτϫʔΫతʹ͍ۙͱ͜Ζ͔ΒෛՙΛ༩͑Δࣄ͕Ͱ͖Δ - ωοτϫʔΫϨΠςϯγ͕ߴ͍ͱɺର৅γεςϜʹෛՙ͕͏·͔͔͘Βͳ͍ - ωοτϫʔΫͷঢ়گʹΑΓ݁Ռ͕҆ఆ͠ͳ͍
  17. ෛՙࢼݧͷਐΊํ ϘτϧωοΫ͸͍ΖΜͳͱ͜ΖͰൃੜ͢Δ • Πϯϑϥͷߏ੒ʹ໰୊͕͋Δ • OSͷઃఆʹ໰୊͕͋Δ • webαʔόʔͷઃఆʹ໰୊͕͋Δ(KeepAliveɺϫʔΧʔ਺ɺBacklog…) • PHPͷઃఆʹ໰୊͕͋Δ(APCuɺOPCache…)

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

    webαʔόʔͷઃఆʹ໰୊͕͋Δ(KeepAliveɺϫʔΧʔ਺ɺBacklog…) • PHPͷઃఆʹ໰୊͕͋Δ(APCuɺOPCache…) • ΞϓϦέʔγϣϯͷϑϨʔϜϫʔΫͷઃఆɺར༻ํ๏ʹ໰୊͕͋Δ(debug mode) • ΞϓϦέʔγϣϯϩδοΫʹ໰୊͕͋Δ(N+1ɺDB઀ଓํ๏ɺඇޮ཰ͳॲཧ) • DBαʔόʔͷઃఆʹ໰୊͕͋Δ(Index, buffer pool size…)
  19. ෛՙࢼݧͷਐΊํ • ੩తϑΝΠϧʹରͯ͠ͷϦΫΤετ - webαʔόʔΛؚΊͨͦΕҎԼͷϨΠϠͷઃఆ͕͓͔͍͠ͱ͜Ζ͕ͳ͍͔֬ೝ • HelloWorldΞϓϦέʔγϣϯ΁ͷϦΫΤετ - ϑϨʔϜϫʔΫͦΕࣗମͷར༻ํ๏΍ઃఆʹ͓͔͍͠ͱ͜Ζ͕ͳ͍͔֬ೝ ·ͣ͸1୆ͷwebαʔόʔʹରͯ͠ԼهͷγφϦΦΛ࣮ߦͯ͠ΈΔ

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

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

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

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

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

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

  26. ϨΠςϯγͷఆٛ •Response timeͱService Time͸۠ผ͢Δ •Service time͸ॲཧʹ͔͔ͬͨ࣌ؒ •Response time͸ΩϡʔͰͷ଴ͪ࣌ؒ΋ؚΊΔ -ύέοτͷ଴ͪߦྻ -CPUͷϥϯΩϡʔͷ଴ͪߦྻ

    -ApacheͷListen backlogͷ଴ͪߦྻ -I/Oͷ଴ͪߦྻ •؍ଌऀ͕୭͔ʹ஫ҙ ΫϥΠΞϯτ͔ΒΈͨϨεϙϯελΠϜ͸஗͍͕WebαʔόʔͷΞΫηεϩά্తʹ͸஗ ͘ͳ͍৔߹ɺWebαʔόʔͰͷ଴ͪ࣌ؒʹ͕͔͔͍࣌ؒͬͯΔɺͳͲ
  27. ϨΠςϯγͷಛੑ •ϨΠςϯγ͸ݸʑʹ͓͍ͯϢχʔΫ •͋Δૢ࡞ͷͦͷॠؒͷෛՙঢ়گʹ͓͍ͯͷԠ౴࣌ؒ •γεςϜΛߏ੒͢Δίϯϙʔωϯτͷ༷ʑͳৼΔ෣͍ʹΑΓӨڹ͞ΕΔ ֤ϨΠϠʔͷΩϟογϡͷ༗ແɺGCͷൃੜɺεϧʔϓοτͷ௿ԼͳͲ •ಉ͡ૢ࡞͕͋Δ࣌͸50msͰऴΘΔͱ͖΋͋Ε͹500ms͔͔Δ͜ͱ΋͋ Δ •ฏۉ͸͋·ΓҙຯΛͳ͞ͳ͍ •ൺֱ͸৭Μͳ৚݅ͦΖͬͯͳ͍ͱҙຯͳ͍

  28. ϨΠςϯγͷ؍ଌϙΠϯτ •ϨΠςϯγͰॏཁͳͷ͸ͦͷৼΔ෣͍(෼෍)Λ؍ଌ͢Δ͜ͱ •50msʙ100msͰ༳Β͙γεςϜͱ50msʙ1000msͰ༳Β͙γεςϜͩ ͱલऀͷγεςϜͷํ͕҆ఆ͍ͯ͠Δ •Ұఆظؒʹ͓͚Δ95th percentile, 99th percentile, Max response

    timeͳͲΛάϥϑʹग़͓ͯ͘͠ •໨ඪੑೳͷεϧʔϓοτ·Ͱ্͍͛ͯ͘ͱϨΠςϯγ͸Ͳ͏ͳΔ ͔ʁڐ༰ൣғ಺͔ʁ
  29. ෛՙͱ޲͖߹͏࣌ͷΞϓϩʔν •“ਪଌ͢ΔͳɺܭଌͤΑ” •USE Method •PHPͷ࣮ߦΞʔΩςΫνϟΛҙࣝ͢Δ

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

  31. USE Method •Utilization Saturation and Errors (USE) Method By Brendan

    Gregg •֤Ϧιʔεͷ࢖༻཰ɺ๞࿨ɺΤϥʔʹ͍ͭͯண໨͢Δ •୅දతͳϦιʔε CPU ϝϞϦʔ σΟεΫ ωοτϫʔΫ ͳͲ Mutex File Descriptors ͳͲ ෺ཧϦιʔε ιϑτ΢ΣΞϦιʔε
  32. PHPͷ࣮ߦΞʔΩςΫνϟΛҙࣝ͢Δ • Shared Nothing Architecture • ϦΫΤετຖʹ༷ʑͳ৘ใ͕ຖճॳظԽ͞ΕɺϦΫΤετಉ࢜ͷॲཧ͕͓ޓ͍ʹಠཱ͍ͯ͠Δ • લͷϦΫΤετͷॲཧ͕࣍ͷϦΫΤετʹӨڹΛ༩͑ͳ͍ •

    ϦΫΤετຖʹϝϞϦղ์͢ΔͷͰϝϞϦϦʔΫͳͲͷ৺഑͕গͳ͍ • ঢ়ଶΛ͍࣋ͬͯͳ͍ͷͰεέʔϧΞ΢τΛ͠΍͍͢ɻεέʔϧΞ΢τͨ࣌͠ʹϦχΞʹ ύϑΥʔϚϯε্͕͕Γ΍͍͢ɻ • ϦΫΤετॲཧຖͷΦʔόʔϔου͕େ͖͍ • ϦΫΤετΛ·͍ͨͩ৘ใͷอ͕࣋Ͱ͖ͳ͍(APCuͳͲΛར༻͠ͳ͍ͱ͍͚ͳ͍) ϝϦοτ σϝϦοτ
  33. PHPͷ࣮ߦΞʔΩςΫνϟΛҙࣝ͢Δ • ͜ͷ࣮ߦΞʔΩςΫνϟʹΑΔԸܙ΋୔ࢁ͋Δ͕ɺͻͱͭͷϦΫΤετॲཧʹண໨͢ΔͱΦʔόʔ ϔου͕ଟ͘ඞཁʹͳΓຊ࣭తʹ஗͍ • ͜ͷ࣮ߦΞʔΩςΫνϟΛҙࣝͯ͠PHP͕ۤखͳࣄͰؤுΒͳ͍Α͏ʹ͠Α͏ • 1ϦΫΤετ͋ͨΓʹॲཧ͢Δ࢓ࣄΛݮΒͯ͠ɺεέʔϧΞ΢τͰԣʹͳΒ΂ͯύϑΥʔϚϯεΛ্ ͛Δͷ͕ૉ௚ͳΞϓϩʔν •

    PHPͩͬͯؤுͬͨΒ΍ΕΔ!
  34. ͓·͚

  35. ͓͢͢Ίॻ੶

  36. ISUCON

  37. ISUCON ஫໨

  38. ·ͱΊ

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

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

    ਖ਼͍͠؍ଌɺํ๏࿦ͷཱ֬ɺମܥԽ • ೉͍͠ʂ͚Ͳָ͍͠
  41. Happy Performance Engineering!

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