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
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
5
1.2k
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
9
5.2k
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
2
360
Amazon ECS デプロイツール ecspresso の開発を支える「正しい抽象化」の探求 / YAPC::Fukuoka 2025
fujiwara3
13
13k
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
9
6.8k
alecthomas/kong はいいぞ
fujiwara3
7
2.5k
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
3.7k
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
4
4.8k
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
12
5.9k
Other Decks in Technology
See All in Technology
GoでCコンパイラを作った話
repunit
0
150
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
230
2026年のソフトウェア開発を考える(2026/07版) / Agentic Software Engineering 2026-07 Findy Edition
twada
PRO
26
11k
OPENLOGI Company Profile for engineer
hr01
1
74k
Multicaで30個のミニプロジェクトをAIエージェント運用して見えてきたこと
eiei114
1
630
”AIを使う” から ”AIに任せる” へ ─ 開発プロセスを再設計してAIを組織標準にするまで
cyberagentdevelopers
PRO
1
140
副作用のある Lambda でも Lambda Power Tuning は使えるのか / lambda-power-tuning-side-effects
koukihosaka
1
140
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
210
人とエージェントが高め合う協業設計
kintotechdev
0
760
AmplifyHostingConstructからSSRフレームワークのためのホスティング設計を考察する/amplify-hosting-construct
fossamagna
1
310
AI工学特論: MLOps・継続的評価
asei
5
1.3k
設計レビューとAIハーネスで向き合う AIが生み出した新しいボトルネックの対処法 / Design Reviews and AI Harnesses Against New Bottlenecks Created by AI
nstock
4
440
Featured
See All Featured
How to Talk to Developers About Accessibility
jct
2
430
Testing 201, or: Great Expectations
jmmastey
46
8.2k
The browser strikes back
jonoalderson
0
1.4k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
750
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
880
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
GraphQLとの向き合い方2022年版
quramy
50
15k
How STYLIGHT went responsive
nonsquared
100
6.2k
Building the Perfect Custom Keyboard
takai
2
820
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
410
Discover your Explorer Soul
emna__ayadi
2
1.2k
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