Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ISUCON夏期講習2017 講義編 / isucon summer school 1
Search
FUJIWARA Shunichiro
August 25, 2017
Technology
16k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ISUCON夏期講習2017 講義編 / isucon summer school 1
FUJIWARA Shunichiro
August 25, 2017
More Decks by FUJIWARA Shunichiro
See All by FUJIWARA Shunichiro
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
410
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
8
2.1k
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
9
5.9k
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
2
390
Amazon ECS デプロイツール ecspresso の開発を支える「正しい抽象化」の探求 / YAPC::Fukuoka 2025
fujiwara3
13
14k
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
9
6.9k
alecthomas/kong はいいぞ
fujiwara3
7
2.6k
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
3.8k
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
4
5.4k
Other Decks in Technology
See All in Technology
omasushiというライブラリを作った
polidog
PRO
0
140
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
280
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
110
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
270
AIで実装は速くなった。なのにプロダクトは速くならない。職能の壁を越えて価値のフローを設計する
nwiizo
7
7.5k
Kiro Crewしか勝たん!?
miu_crescent
PRO
0
190
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
0
200
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
290
Code4Lib JAPANカンファレンス2026 開会挨拶 / Code4Lib JAPAN Conference 2026: Opening Remarks
ykiyota
0
200
Driving AI Adoption Using In-House GPUs to Serve Qwen
po3rin
2
470
module Synths; end
asonas
1
130
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
230
Featured
See All Featured
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
690
Balancing Empowerment & Direction
lara
6
1.3k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
410
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
A Tale of Four Properties
chriscoyier
163
24k
A better future with KSS
kneath
240
18k
We Are The Robots
honzajavorek
0
350
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
Transcript
ISUCON Նظߨश 2017 ߨٛฤ 2017.08.25 @fujiwara
@fujiwara ٕज़෦ github.com/fujiwara sfujiwara.hatenablog.com
ISUCON શઓ ISUCON 1 - ༏উ (@songmu @sugyan) ISUCON 2
- ༏উ (@songmu @typester) ! ISUCON 3 - ग़ ISUCON 4 - 3Ґ (@acidlemon @handlename) ISUCON 5 - ༏উ (@songmu @sugyan) ISUCON 6 - ४༏উ (@moshisora990 @kasari)
ISUCON ͱ
None
ISUCON = Iikanjini Speed Up CONtest ༩͑ΒΕͨWebΞϓϦέʔγϣϯΛ ͋ΒΏΔखஈΛͬͯߴԽ͢Δ ίϯςετ ϕϯνϚʔΫ͕࣮ߦ͞ΕɺͦͷείΞ͕ߴ͍νʔϜ͕উར
OSͷઃఆมߋɺΞϓϦέʔγϣϯͷॻ͖͑ɺͳΜͰOK ϕϯνϚʔΫ͕༗ޮͳείΞΛग़ͨ͠ == ޭ
֓೦ਤ
ISUCON ͷྺ࢙
ISUCON 1,2 - ઌணॱຊબظ ༧બͳ͠ ઌணॱͰਃ͠ࠐΜͩνʔϜ͕ࢀՃͰ͖Δ (20νʔϜ) ISUCON 1 ༏উۚ10ສԁ
͓: blogͷίϝϯτཝ ग़: Livedoor1 ISUCON 2 ༏উۚ30ສԁ ͓: νέοτൢചαΠτ ग़: NHN Japan1 1 ͲͪΒݱ LINE
ISUCON 3,4 - ༧બϩʔΧϧϕϯνظ ༧બɺֶੜ͕Ͱ͖ͨ ༧બ AWS ্ͷΠϯελϯεΛ֤νʔϜ͕1ىಈ ϕϯνϚʔΫΠϯελϯε্ͷϓϩάϥϜ(GoόΠφϦ)͕ localhost
ʹର࣮ͯ͠ߦ ISUCON 3 ༏উۚ100ສԁ(Ҏޙಉ͡) ͓: Nopaste / ը૾ߘSNS ग़: ΧϠοΫ ISUCON 4 ͓: ͍͢͜Μۜߦ / ಈըࠂ৴ ग़: Cookpad
ISUCON 3,4 ༧બ֓೦ਤ
ISUCON 5,6 - ༧બϦϞʔτϕϯνظ ༧બ GCP(5) Azure(6) ্ͷΠϯελϯεΛ֤͕ࣗىಈ ϕϯνϚʔΫӡӦ͕༻ҙͨ͠Πϯελϯε͕ ֤ࣗͷΠϯελϯεʹର࣮ͯ͠ߦ
ISUCON 5 ͓: SNS(mixiతͳ) / ϚΠΫϩαʔϏε ग़: Treasure Data ISUCON 6 ͓: ΩʔϫʔυࣗಈϦϯΫ / ͓ֆ͔͖ڞ༗αΠτ ग़: ͯͳ(༧બ) pixiv(ຊબ)
None
Ұൠͷ༧બ௨աഒ15ഒҎ্ (16/267) ֶੜ5ഒ (10/50) ຊબʹग़Ͱ͖Εۚ100ສԁເͰͳ͍ʂ
ISUCON ࢀՃऀͷօ͞Μ(Ұൠ) Webܥاۀʹ͓ۈΊ (͕ଟ͍) ࠒ͔ΒڊେͳτϥϑΟοΫΛࡹ͍͍ͯΔ (ਓ͍Δ) ஶ໊ OSS ͷίϛολͱ͔ (كʹ͍Δ)
νʔϜ৬ͰΜͩΓɺ༑ਓͰΜͩΓ ΠϯϑϥدΓͷਓ͕ଟ͍ɺͱ͍͏͜ͱͳ͍
ISUCON ૯߹֨ಆٕ OSɺϛυϧΣΞͷνϡʔχϯάͷΈͰউͯͳ͍(ઈରʹ) ڝٕதͷ࣌ؒʹΞϓϦέʔγϣϯΛॻ͖͑ΔεΩϧ DB ͷࣝ ޮͷΑ͍ΞʔΩςΫνϟͷࣝ ϘτϧωοΫΛత֬ʹൃݟ͢Δೳྗ ຊબͰෳߏɺσϓϩΠ
͓͢͢Ίͷϝϯόʔߏ OSϛυϧΣΞʹڧ͍ਓ: 1໊ ΞϓϦέʔγϣϯʹڧ͍ਓ: 2໊ ϘτϧωοΫͷൃݟɺత֬ͳઃఆɺϞχλϦϯάඞཁ ࣌ؒͱͯ͠Γͳ͍ͷΞϓϦέʔγϣϯͷॻ͖͑
ISUCON ͰΔ͜ͱ = ύϑΥʔϚϯενϡʔχϯά
ύϑΥʔϚϯενϡʔχϯά ISUCON ʹ͓͚ΔύϑΥʔϚϯε == ॲཧͨ͠HTTPϦΫΤετ (جຊ) 2 Ұఆ࣌ؒʹͲΕ͚ͩଟ͘ͷHTTPϨεϙϯεΛฦͤΔ͔ 1ϦΫΤετͨΓͷॲཧ࣌ؒΛ͘͢Δ ฒߦͰଟͷϦΫΤετΛॲཧ͢Δ
2 είΞͷܭࢉʹ͍ͭͯৄࡉϨΪϡϨʔγϣϯʹهࡌ͋Γ
WebΞϓϦέʔγϣϯͷ֓೦ਤ ֤ཁૉͷॲཧΛ͍͔ʹগͳ͘͢Δ͔ ྫ: ੩తϑΝΠϧWebαʔόͰ৴ (AppͰॲཧ͠ͳ͍) App͔ΒStorageͷΫΤϦΛݮΒ ͢ StorageͰDiskΞΫηεΛݮΒ͢ ͦͦΫϥΠΞϯτ͔ΒϦΫΤε τͤ͞ͳ͍(Cache-Controlͱ͔)
શϓϩάϥϚʔ͕Δ͖ϨΠςϯγʔ3 nano sec L1Ωϟογϡࢀর 0.5 ذ༧ଌࣦഊ 5 L2Ωϟογϡࢀর 7 MutexͷϩοΫͱΞϯϩοΫ
25 ϝΠϯϝϞϦʔࢀর 100 Zippy[Snappy]ʹΑΔ1KBͷѹॖ 3,000 1GbpsωοτϫʔΫӽ͠ʹ2KBΛૹ৴ 20,000 ϝϞϦʔ͔Β࿈ଓͨ͠1MBͷྖҬͷಡΈग़͠ 250,000 ಉҰσʔληϯλʔʹ͓͚ΔϥϯυτϦοϓ 500,000 0.5 msec σΟεΫγʔΫ 10,000,000 10 msec σΟεΫ͔Β࿈ଓͨ͠1MBͷྖҬͷಡΈग़͠ 20,000,000 20 msec ύέοτΛΧϦϑΥϧχΞ→Φϥϯμ→ΧϦϑΥ ϧχΞͱૹΔ 150,000,000 150 msec 3 http://norvig.com/21-days.html#answers
ͨͱ͑ TCP ͷ 3way handshake ଓཱ֬·Ͱʹ 0.5ms x 1.5ճ =
0.75ms
ฒྻΛ্͛ͯϨΠςϯγΛӅṭ͢Δ redis-benchmark -h $redis_server -c $c -t get
ͨͱ͑ 1 HTTP ϦΫΤετΛ10msͰฦ٫͢Δ 1ճ͋ͨΓ ճ ߹ܭ LL ͷ HTTP
αʔόͰ Hello World 0.5ms 1 0.5ms ηογϣϯཧͷͨΊʹ Redis ʹΫΤϦ 0.5ms 1 0.5ms DBʹରͯ͠5ճΫΤϦΛൃߦ 1ms 5 5ms ςϯϓϨʔτΛϨϯμϦϯ ά 3ms 1 3ms 10 ms/req = 100 req/sec (1ฒྻ) ͪͳΈʹ ISUCON 1 ͷ༏উείΞ 1500 req/sec ૬
۩ମతʹͲ͏͢Δ?
۩ମతʹͲ͏͢Δ? 1. ϘτϧωοΫΛݟ͚ͭΔ 2. ղফͯ͠ܭଌ͢Δ 3. (1,2Λ܁Γฦ͠) 4. ༏উ
ϘτϧωοΫ Ұ൪ࡉ͍(͍)ͱ͜ΖΛվળ͠ͳ͍ͱҙຯ͕ͳ͍
ଓ͖ ࣮ફฤ Ͱ
TCP 3way handshake ը૾ग़య https://commons.wikimedia.org/wiki/File:Tcp_normal.svg