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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
9
4.7k
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
2
340
Amazon ECS デプロイツール ecspresso の開発を支える「正しい抽象化」の探求 / YAPC::Fukuoka 2025
fujiwara3
13
12k
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
9
6.7k
alecthomas/kong はいいぞ
fujiwara3
7
2.5k
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
3.7k
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
3
4.3k
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
12
5.8k
k6による負荷試験 入門から日常的な実践まで/Re:TechTalk #01
fujiwara3
2
610
Other Decks in Technology
See All in Technology
【NRUG vol.18】なぜ多くのオブザーバビリティ導入は失敗するのか
nrug_member
0
160
スキルと MCP ツール、責務をどう分けるか? AI が迷わないインターフェース設計の戦略
cdataj
1
1.1k
連合学習と機密コンピューティング
lycorptech_jp
PRO
0
120
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
130
AGENTS.mdとSkillsで始めるAIエージェント活用
sonoda_mj
3
220
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
150
Snowflakeと仲良くなる第一歩
coco_se
4
480
脆弱性対応、どこで線を引くか
rymiyamoto
1
400
手塩にかけりゃいいってもんじゃない
ming_ayami
0
590
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1.1k
フィジカル版Github Onshapeの紹介
shiba_8ro
0
260
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Designing Experiences People Love
moore
143
24k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
560
Rails Girls Zürich Keynote
gr2m
96
14k
Accessibility Awareness
sabderemane
1
140
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
RailsConf 2023
tenderlove
30
1.5k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
The Cult of Friendly URLs
andyhume
79
6.9k
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