Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ISUCONを社内向け1人参加型ISUCONにアレンジしてみた

 ISUCONを社内向け1人参加型ISUCONにアレンジしてみた

PHPerKaigi 2018 LT資料
「ISUCONを社内向け1人参加型ISUCONにアレンジしてみた」
ISUCONとは、「お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル、それがISUCONです」※公式サイトより
通常のISUCONは3人1チームでの参加ですが、社内のエンジニア向けイベントとして1人で参加するISUCONにアレンジした、問題作成、運営側のおはなしです
社内向けならではの、社内のメンバーに知ってほしいこと問題に盛り込んで開催しています
PHPerもチューニングしよう!

Ec2fcdc4ea7905b289967a2c4c43e154?s=128

CyberAgent SGE Engineer

March 10, 2018
Tweet

More Decks by CyberAgent SGE Engineer

Other Decks in Programming

Transcript

  1. *46$0/Λࣾ಺޲͚ਓࢀՃܕ *46$0/ʹΞϨϯδͯ͠Έͨ גࣜձࣾαΠόʔΤʔδΣϯτɹനҪɹӳ !HPPEPP  QIQFSLBJHJ

  2. • גࣜձࣾαΠόʔΤʔδΣϯτ • 4(&$50 • നҪɹӳ • ΤϯδχΞ • 5XJUUFS

    !HPPEPP • #MPH IUUQBNFCMPKQHPPEPP • %2 ͙ͪ͢Ή '# ϓΫϦϙ ཱྀܳਓ  ͓લɺ୭Α
  3. "HFOEB w *46$0/ͱ͸ w ࣾ಺Πϕϯτͷཁ݅ w ΞϨϯδ w ϝοηʔδੑ w

    ·ͱΊ
  4. *46$0/ͱ͸

  5. *46$0/ͱ͸ ʮ͓୊ͱͳΔ8FCαʔϏεΛܾΊΒ ΕͨϨΪϡϨʔγϣϯͷதͰݶք·Ͱ ߴ଎ԽΛਤΔνϡʔχϯάότϧɺ ͦΕ͕*46$0/Ͱ͢ʯ ˞ެࣜαΠτΑΓ

  6. ͪͳΈʹɾɾɾ

  7. *46$0/ϨΪϡϨʔγϣϯ wνʔϜ͸໊΋͘͠͸໊ͰͷࢀՃ wߴ଎Խର৅ͷιϑτ΢ΣΞͱͯ͠ओ࠵ऀ͔Β1FSM  3VCZ 1ZUIPO 1)1 /PEFKT (PʹΑΔ8FCΞϓ Ϧέʔγϣϯ͕༩͑ΒΕΔ

    w࠾఺৚݅ΛΫϦΞͨ͠ࢀՃऀͷؒͰɺੑೳ஋ͷߴ͞Λڝ͏ w֤αʔόʹ͓͚Διϑτ΢ΣΞͷೖΕସ͑ɺઃఆͷมߋɺ ΞϓϦέʔγϣϯίʔυͷมߋ͓ΑͼೖΕସ͑ͳͲ͸Ұ੾ ېࢭ͠ͳ͍
  8. جຊ ̍νʔϜ໊̏Ͱ ௅Ήڝٕ

  9. ̏ਓͷ໾ׂ෼୲Πϝʔδ ΞϓϦέʔγϣϯ νϡʔχϯά Πϯϑϥɾϛυϧ΢ΣΞ νϡʔχϯά σʔλϕʔε νϡʔχϯά

  10. ࣾ಺Πϕϯτͷཁ݅

  11. ԦऀΛ ܾΊ͍ͨ

  12. ΞϨϯδ

  13. ̍ਓࢀՃܕ *46$0/ ʹ͢Δ

  14. *46$0/༧બΛϕʔεʹ࡞੒ wαʔό͸($1 w04͸6CVOUV w1)1ͷϑϨʔϜϫʔΫ͸4MJN wϕϯνϚʔΧʔ΋ΧελϚΠζͯ͠࢖༻ +BWB੡

  15. ̍ਓͰͰ͖Δ෼ྔʹݮΒ͢ ΞϓϦέʔγϣϯ νϡʔχϯά Πϯϑϥɾϛυϧ΢ΣΞ νϡʔχϯά σʔλϕʔε νϡʔχϯά

  16. ϛυϧ΢ΣΞͷઃఆͰ೰ΜͰཉ͘͠ͳ͔ͬͨ ྫ͑͹ w ϑΝΠϧ഑ஔ͸ͳΔ΂͘VCVOUVͷඪ४ߏ੒ w ઃఆϑΝΠϧ͸ύοέʔδπʔϧͷσϑΥϧτ
 FUDOHJOYOHJOYDPOG
 FUDNZTRMNZDOG
 FUDQIQGQNQIQJOJ
 FUDQIQGQNQIQGQNDPOG

    w ىಈεΫϦϓτʢTZTUFNE ͸׬උ
 FUDTZTUFNETZTUFNʹ഑ஔ
  17. ϘτϧωοΫ΋ΞϓϦέʔγϣϯͰ ରࡦͰ͖ΔΑ͏ʹ໰୊࡞੒ *46$0/ͷ໰୊͸Α͘࿅ΒΕ͍ͯΔ͜ͱ͕վΊͯΘ͔Γ·ͨ͠

  18. ϝοηʔδੑ

  19. ήʔϜͷαʔόཁ݅ͷಛ௃ w σʔλྔ͕ଟ͍ w ಉ࣌ϦΫΤετ਺͕ଟ͍ w ߏ੒͸ΘΓͱ୯७

  20. ͍ΘΏΔࣾ಺*46$0/Ͱ͸͋Δ͕ ࣾ಺ͷϝϯόʔʹ఻͍͑ͨ͜ͱΛ ໰୊ʹࠐΊΔͷ͕ Ұ൪఻ΘΔͷͰ͸ͳ͍͔ʁ

  21. աڈܦݧͨ͠ΞϯνύλʔϯΛ ໰୊ʹ੝ΓࠐΜͩ

  22. ྫ͑͹

  23. .Z42-ͷΠϯσοΫεͱ͔ user_id friend_id hit_flag 1 2 0 2 5 1

    3 4 1 4 5 1 5 6 0 6 8 1 8 12 1 10 13 0 12 15 1 13 20 0 15 20 1 20 25 0 SFMBUJPOςʔϒϧ CREATE TABLE `users` ( `user_id` int(11) NOT NULL , `friend_id` int(11) NOT NULL, `hit_flag` int(1) NOT NULL, PRIMARY KEY (`user_id`), UNIQUE KEY `user_friend` (`user_id`,`friend_id`) ) SELECT * FROM relation WHERE friend_id = 12; ΠϯσοΫε GSJFOE@JEʹ͸ ΠϯσοΫεޮ͍ͯͳ͍
  24. ඇޮ཰ͳ-PPQͷॲཧͱ͔ $articleQuery = "SELECT id FROM articles ORDER BY id

    DESC" $articles = dbExecute($articleQuery)->fetchAll(); foreach ($articles as $key => $article) { $articles[$key]['detail'] = getArticle($article['id']); } (ུ) function getArticle($id) { $query = "SELECT * FROM articles WHERE id = ? "; $article = dbExecute($query, [$id])->fetch(); return $article; } ؔ਺ͷதͰ42-Λݺͼग़͍ͯ͠Δͷʹؾ͔ͮͳ͍
  25. ݅਺͕ෆ໌ͳͷʹ0 / ͷ໋ྩ࣮ߦͱ͔ σʔλ݅਺ͱͱ΋ʹઢܗͰ͕͔͔࣌ؒΔ $loginUsers = $redis->keys('login_*'); ,&:4 5JNFDPNQMFYJUZ0 /

    XJUI/CFJOHUIF OVNCFSPGLFZTJOUIFEBUBCBTF  Ҿ༻ɿhttps://redis.io/commands/keys
  26. ΋ͬͱ΋ ఻͍͑ͨ͜ͱ

  27. ܭଌͤΑ

  28. 3PC1JLFͷϓϩάϥϛϯάͭͷ๏ଇ ϓϩάϥϜ͕Ͳ͜Ͱ࣌ؒΛফඅ͢Δ͜ͱʹͳΔ͔஌Δ ͜ͱ͸Ͱ͖ͳ͍ɻϘτϧωοΫ͸ڻ͘΂͖ՕॴͰى͜ Δ΋ͷͰ͋Δɻ͕ͨͬͯ͠ɺͲ͕͜ϘτϧωοΫͳͷ ͔Λ͸͖ͬΓͤ͞Δ·Ͱ͸ɺਪଌΛߦͬͨΓɺεϐʔ υϋοΫΛͯ͠͸ͳΒͳ͍ɻ ܭଌ͢΂͠ɻܭଌ͢Δ·Ͱ͸଎౓ͷͨΊͷௐ੔Λͯ͠ ͸ͳΒͳ͍ɻίʔυͷҰ෦͕࢒ΓΛѹ౗͠ͳ͍ͷͰ͋ Ε͹ɺͳ͓͞ΒͰ͋Δɻ Ҿ༻ɿhttps://ja.wikipedia.org/wiki/UNIX఩ֶ

  29. ·ͱΊ

  30. w *46$0/Λ̍ਓࢀՃܕʹͯ͠Έͨ w ̍ਓͰͰ͖Δ෼ྔʹݮΒͨ͠ w ࢀՃऀ΁ͷϝοηʔδͱͯࣾ͠಺ ϊ΢ϋ΢Λ੝ΓࠐΜͩ w ܭଌେࣄʂ

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