Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
PHPer向けWebアプリケーションのパフォーマンスチューニング入門 / web perfo...
Search
yugo
July 14, 2018
Technology
3.2k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PHPer向けWebアプリケーションのパフォーマンスチューニング入門 / web performance tuning
PHPカンファレンス関西2018で発表した登壇資料です。
yugo
July 14, 2018
Other Decks in Technology
See All in Technology
今こそ知りたいAmplifyGen2
mkdev10
2
160
⾮構造化データを価値に変える AI エージェント基盤とその組織
ivry_presentationmaterials
0
130
Cognition AI Japan - ウェビナー2_テストQA_運用監視
cogakira
0
130
AI時代のAPI開発を加速する品質ガードレール / API Quality Guardrails in the AI Era
yokawasa
0
190
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
170
Loop Engineering, beyond prompt, context, and harness engineering
glaforge
0
100
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
290
今さら理解するウェブフォントver.2026
takanorip
3
680
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
120
Getting Started with Google Antigravity
glaforge
0
210
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
480
しろおびから始める!ログ活用の第一歩
shumei_ito
0
910
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
450
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
700
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
590
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Transcript
PHPer͚WebΞϓϦέʔγϣϯͷ ύϑΥʔϚϯενϡʔχϯάೖ PHPΧϯϑΝϨϯεؔ2018 ߴڮါޗ
• KLabͰιʔγϟϧήʔϜΞϓϦέʔγϣϯͷ։ൃ • αʔόʔαΠυΤϯδχΞ • PHPɺGoɺPython • PHP Internals Book
ຊޠ༁ http://www.phpinternalsbook-ja.com ˏyugo_tak ࣗݾհ
1. ෛՙࢼݧʹ͍ͭͯ 2. ύϑΥʔϚϯεʹ͍ͭͯͷߟ͑ํ 3. ·ͱΊ
͡Ίʹɺࠓ͞ͳ͍͜ͱ
ࠓ͞ͳ͍͜ͱ • ΤϯυϢʔβʔͷϢʔβʔମݧʹணͨ͠߹ɺόοΫΤϯυͷνϡʔχϯάͷޮՌݶఆత • ϒϥβͰ͍ΖΜͳ͜ͱΛ͍ͯ͠Δ - DOMπϦʔͷߏஙɺϨϯμϦϯάɺJavascriptͷεΫϦϓτධՁɾ࣮ߦͳͲ - ωοτϫʔΫӽ͠ʹϦιʔεΛϩʔυ͢ΔॲཧͦͷҰ෦ ϑϩϯτΤϯυʹ͓͚ΔύϑΥʔϚϯενϡʔχϯά
ϢʔβʔମݧΛ্ͤ͞Δʹ ϑϩϯτΤϯυʹ͓͚ΔνϡʔχϯάඞཁෆՄܽ
ͨͪPHPer ϑϩϯτΤϯυϑϩϯτΤϯυͰେࣄ͚ͩͲɺ όοΫΤϯυόοΫΤϯυͰ୲อ͠ͳ͍ͱ͍͚ͳ͍͜ͱ͕͋Δɻ ϦϦʔε࣌ͷඪੑೳΫϦΞͰ͖Δʁ ྲྀೖ͕૿͑ͨ߹ɺαʔόʔෛՙʹ͑ΒΕΔʁ ࠓόοΫΤϯυΤϯδχΞత؍ͰύϑΥʔϚϯενϡʔχϯάʹ͍ͭͯ͠·͢
ෛՙࢼݧʹ͍ͭͯ
ෛՙࢼݧʹ͍ͭͯ ෛՙࢼݧͰԿΛ͢Δ͖͔ʁ • ඪੑೳͷઃఆ MUST • ݱߦͷγεςϜߏͰඪੑೳΛୡͰ͖Δ͔ͷ֬ೝ(=ඪੑ) MUST • ݱߦͷγεςϜߏΛεέʔϧͤ͞Δͱੑೳεέʔϧ͢Δ͔ͷ֬ೝ(=εέʔϧੑ)
MUST • γεςϜͷੑೳ͕Ͳ͜·Ͱεέʔϧ͢Δ͔ͷ֬ೝ(=ݶքੑ) SHOULD • ظؒՔಇͨ͜͠ͱʹΑΔσʔλɺϩάͷੵͳͲʹΑͬͯੑೳʹ͕Ͱͳ͍͔ͷ֬ೝ(=ٱੑ) SHOULD
ෛՙࢼݧʹ͍ͭͯ ͦΜͳʹෛՙ͕͔͔Βͳ͍ڥ͔ͩΒෛՙࢼݧ͠ͳ͍͍ͯ͘ͱ͍͏Ͱͳ͍ɻ ·ͨɺඪੑೳΛୡͨ͠ࣄ͚ͩΛ֬ೝ͢Ε͍͍ͱ͍͏Θ͚Ͱͳ͍ɻ γεςϜͷ4ͭͷੑ࣭(ඪੑɺεέʔϧੑɺݶքੑɺٱੑ)Λ֬ೝ͓ͯ͘͜͠ͱ͕ॏཁɻ ※γεςϜͷར༻ͷ͞ΕํʹΑͬͯ͜ͷશͯͷੑ࣭Λඞͣࢼݧ͢Δඞཁͳ͍ɻ ྫ͑ࣾγεςϜͳͲͷΑ͏ʹγεςϜͷར༻ऀ͕ݶఆతͰྲྀೖ͕҆ఆ͍ͯ͠Δ߹εέʔϧੑॏཁͰͳ͘ͳΔ͠ɺ ϓϩϞʔγϣϯΛ͓͜ͳ͏ࡍͷಛఆͷεύΠΫʹ͑ͤ͢͞Ε͍͍ͱ͍͏ঢ়گͰ͋Εظӡ༻Λఆͨ͠ٱςετ͍Β ͳ͍͔͠Εͳ͍
ඪੑೳͷઃఆ •webΞϓϦέʔγϣϯͷදతͳੑೳࢦඪ - εϧʔϓοτ(req/sec) - ϨΠςϯγ •ఆෛՙΛܭࢉˠඪੑೳΛઃఆ •ఆෛՙ͋͘·Ͱఆ(DAU͕˓˓ਓɺ1ਓฏۉͯ͠˓˓ϖʔδΞΫηε͢Δ) •webͷྲྀೖͷఆ্͘͠ৼΕ͢ΔՄೳੑ͕͋Δɻ •ͦͷ্ৼΕΛߟྀͯ͠ඪෛՙϨϕϧఆෛՙΑΓߴ͘ઃఆ͓ͯ͘͠
γεςϜͷඪੑೳͷ֬ೝ •ઃఆͨ͠ඪੑೳΛୡͰ͖Δ͔ͷ֬ೝ •ݱߦͷߏʹΑΔੑೳΛ֬ೝ͠ɺඪϨϕϧʹୡͰ͖ͳ͍߹νϡʔχϯάΛ͓ ͜ͳ͏ •ඪੑೳʹୡͰ͖ͳ͍ͱϦϦʔεɺσϓϩΠͰ͖ͳ͍ͷͰ࠷ॏཁ
γεςϜͷεέʔϧੑͷ֬ೝ • εέʔϧΞοϓɺεέʔϧΞτͰੑೳͦΕʹԊ্ͬͯ͢Δߏʹͳ͍ͬͯΔ͔ʁ • ΞϓϦέʔγϣϯมߋͤͣɺΠϯϑϥߏͷεέʔϧΞοϓεέʔϧΞτͷΈʹ͢Δ • Ͳ͜Λεέʔϧͤ͞Εੑೳ্͕͢Δ͔Ѳ͓ͯ͘͠
γεςϜͷݶքੑͷ֬ೝ • γεςϜͷεέʔϧੑ͕୲อͰ͖ΕɺͲ͜·Ͱੑೳ͕εέʔϧͰ͖Δͷ͔֬ೝ͓ͯ͘͠ • ඪੑೳͱεέʔϧੑೳ͕ୡͰ͖͍ͯΕجຊతʹOK͕ͩɺ༨༟͕͋Ε͓͖͍ͬͯͨ
γεςϜͷٱੑͷ֬ೝ •ظՔಇͯ͠σʔλ͕ੵͨ͠ঢ়ଶͰͷੑೳΛ֬ೝ •σʔλྔ͕૿͑ͨ࣌ɺDBׂඞཁͦ͏͔ʁ •ظӡ༻ͤͣɺσʔλͦΜͳʹͨ·Βͳ͍ͷͱ͔Ͱ͋ΕඞਢͰͳ͍
ෛՙࢼݧͷ४උ • ෛՙࢼݧڥ • ΞϓϦέʔγϣϯ • ֎෦γεςϜͷґଘ෦ͷελϒԽ • ߈ܸπʔϧ(JMeterͳͲ) •
߈ܸΠϯελϯεͷ४උ • ߈ܸγφϦΦͷ࡞ ඞཁͳͷ • γφϦΦ༻σʔλ४උ • ϞχλϦϯάπʔϧ (XHGui,NewRelic,ganglia…) • ܭଌπʔϧ (top,vmstat,iostat,sar,netstat…) • ΞΫηεϩάαϚϦπʔϧ (kataribeɺࣗ࡞πʔϧ) • ϓϩϑΝΠϥʔ (XHProf,tideways,blaclfire…) Ҋ֎४උʹ͕͔͔࣌ؒΔͷͰܭըతʹ…ʂ
߈ܸπʔϧͷબఆ ߈ܸπʔϧҎԼΛຬ͍ͨͯ͠Δඞཁ͕͋Δ • ϦΫΤετͷγϡϛϨʔγϣϯ - γφϦΦΛઃఆ࣮ͯ͠ࡍͷϫʔΫϩʔυʹ͍ۙෛՙΛ͔͚Δ͜ͱ͕Ͱ͖Δ - ϦΫΤετύϥϝʔλʔΛಈతʹઃఆͰ͖Δ • γφϦΦͷޭͷఆ݅ͷઃఆ͕Մೳ
- Ϩεϙϯεʹ˓˓ؚ͕·Ε͍ͯͳ͔ͬͨΒfailɺHTTPͷεςʔλείʔυ͕5XXܥͳΒfail • ෛՙϨϕϧͷௐ͕Մೳ - ߈ܸπʔϧଆͷೳྗ͕Γͳͯ͘ेͳෛՙΛ༩͑ΒΕͳ͍ͱ͍͏ͷ͋Γ͕ͪ • ରͷγεςϜͷωοτϫʔΫతʹ͍ۙͱ͜Ζ͔ΒෛՙΛ༩͑Δࣄ͕Ͱ͖Δ - ωοτϫʔΫϨΠςϯγ͕ߴ͍ͱɺରγεςϜʹෛՙ͕͏·͔͔͘Βͳ͍ - ωοτϫʔΫͷঢ়گʹΑΓ݁Ռ͕҆ఆ͠ͳ͍
ෛՙࢼݧͷਐΊํ ϘτϧωοΫ͍ΖΜͳͱ͜ΖͰൃੜ͢Δ • Πϯϑϥͷߏʹ͕͋Δ • OSͷઃఆʹ͕͋Δ • webαʔόʔͷઃఆʹ͕͋Δ(KeepAliveɺϫʔΧʔɺBacklog…) • PHPͷઃఆʹ͕͋Δ(APCuɺOPCache…)
• ΞϓϦέʔγϣϯͷϑϨʔϜϫʔΫͷઃఆɺར༻ํ๏ʹ͕͋Δ(debug mode) • ΞϓϦέʔγϣϯϩδοΫʹ͕͋Δ(N+1ɺDBଓํ๏ɺඇޮͳॲཧ) • DBαʔόʔͷઃఆʹ͕͋Δ(Index, buffer pool size…)
ෛՙࢼݧͷਐΊํ Ұؾʹશ෦Λରʹ͢ΔͱԿ͕ͳΜ͔ͩΘ͔Βͳ͘ͳͬͯ͠·͏! ҙ ϘτϧωοΫ͍ΖΜͳͱ͜ΖͰൃੜ͢Δ • Πϯϑϥͷߏʹ͕͋Δ • OSͷઃఆʹ͕͋Δ •
webαʔόʔͷઃఆʹ͕͋Δ(KeepAliveɺϫʔΧʔɺBacklog…) • PHPͷઃఆʹ͕͋Δ(APCuɺOPCache…) • ΞϓϦέʔγϣϯͷϑϨʔϜϫʔΫͷઃఆɺར༻ํ๏ʹ͕͋Δ(debug mode) • ΞϓϦέʔγϣϯϩδοΫʹ͕͋Δ(N+1ɺDBଓํ๏ɺඇޮͳॲཧ) • DBαʔόʔͷઃఆʹ͕͋Δ(Index, buffer pool size…)
ෛՙࢼݧͷਐΊํ • ੩తϑΝΠϧʹରͯ͠ͷϦΫΤετ - webαʔόʔΛؚΊͨͦΕҎԼͷϨΠϠͷઃఆ͕͓͔͍͠ͱ͜Ζ͕ͳ͍͔֬ೝ • HelloWorldΞϓϦέʔγϣϯͷϦΫΤετ - ϑϨʔϜϫʔΫͦΕࣗମͷར༻ํ๏ઃఆʹ͓͔͍͠ͱ͜Ζ͕ͳ͍͔֬ೝ ·ͣ1ͷwebαʔόʔʹରͯ͠ԼهͷγφϦΦΛ࣮ߦͯ͠ΈΔ
ͦͷαʔόʔͷجຊੑೳΛ֬ೝͰ͖Δ
ෛՙࢼݧͷਐΊํ 1ͷwebαʔόʔʹΑΔ࠷దԽ webαʔόʔͷεέʔϧΞτࢼݧ ·ͣ1Ͱ࠷దԽͯ͠ෳʹ͢Δͷ͕جຊ ͦͷޙɺϘτϧωοΫ͕ग़͖ͯͨͱ͜ΖΛղফ͍͖ͯ͠ɺඪੑೳͷୡΛࢦ͢
ෛՙࢼݧͷνΣοΫ߲ •ରͷγεςϜʹेͳෛՙΛ͔͚ΒΕ͍ͯΔ͔ʁ •ϘτϧωοΫ͕ࠓͲ͜ʹ͋Δ͔ѲͰ͖͍ͯΔ͔ʁ - ϘτϧωοΫҠಈ͢Δ(DBαʔόʔˠwebαʔόʔˠωοτϫʔΫଳҬͳͲ) •߈ܸπʔϧCLͷৼΔ͍Λ࠶ݱͰ͖͍ͯΔ͔ʁ
ύϑΥʔϚϯεʹ͍ͭͯͷߟ͑ํ
ύϑΥʔϚϯεʹ͍ͭͯͷߟ͑ํ •εϧʔϓοτ •ϨΠςϯγ •ෛՙͱ͖߹͏࣌ͷΞϓϩʔν
εϧʔϓοτ •୯Ґ࣌ؒ͋ͨΓʹॲཧͰ͖Δ •දతͳࢦඪrps, qps, ppsͳͲ •ෳͷίϯϙʔωϯτͰߏ͞Ε͍ͯΔγεςϜͷ߹ɺ֤ίϯϙʔωϯ τͷ࠷খͷεϧʔϓοτͰγεςϜશମͷεϧʔϓοτ͕ܾ·Δ → γεςϜʹ͓͚Δεϧʔϓοτͷ࠷খ෦ͷͱ͜Ζ(=ϘτϧωοΫ)Λ ɹղফ͢Δ͜ͱ͕ॏཁɻطʹੑೳ͕͍͍ͱ͜ΖΛνϡʔχϯάͯ͠ޮՌ͕
ͳ͍
ϨΠςϯγ •Ԡɺॲཧ࣌ؒͷ͜ͱ •ෳͷίϯϙʔωϯτͰߏ͞Ε͍ͯΔγεςϜͷ߹ɺ֤ί ϯϙʔωϯτͷϨεϙϯελΠϜͷ߹ܭͰγεςϜશମͷϨεϙ ϯελΠϜ͕ܾ·Δ εϧʔϓοτͱҧͬͯɺϘτϧωοΫͱͳ͍ͬͯͳ͍෦ͰνϡʔχϯάͰ͘ग़དྷΕ શମͱͯ͠ͷϨεϙϯελΠϜͷ্ʹͭͳ͕Γ͍͢
ϨΠςϯγͷఆٛ •Response timeͱService Time۠ผ͢Δ •Service timeॲཧʹ͔͔ͬͨ࣌ؒ •Response timeΩϡʔͰͷؚͪ࣌ؒΊΔ -ύέοτͷͪߦྻ -CPUͷϥϯΩϡʔͷͪߦྻ
-ApacheͷListen backlogͷͪߦྻ -I/Oͷͪߦྻ •؍ଌऀ͕୭͔ʹҙ ΫϥΠΞϯτ͔ΒΈͨϨεϙϯελΠϜ͍͕WebαʔόʔͷΞΫηεϩά্తʹ ͘ͳ͍߹ɺWebαʔόʔͰͷͪ࣌ؒʹ͕͔͔͍࣌ؒͬͯΔɺͳͲ
ϨΠςϯγͷಛੑ •ϨΠςϯγݸʑʹ͓͍ͯϢχʔΫ •͋Δૢ࡞ͷͦͷॠؒͷෛՙঢ়گʹ͓͍ͯͷԠ࣌ؒ •γεςϜΛߏ͢Δίϯϙʔωϯτͷ༷ʑͳৼΔ͍ʹΑΓӨڹ͞ΕΔ ֤ϨΠϠʔͷΩϟογϡͷ༗ແɺGCͷൃੜɺεϧʔϓοτͷԼͳͲ •ಉ͡ૢ࡞͕͋Δ࣌50msͰऴΘΔͱ͖͋Ε500ms͔͔Δ͜ͱ͋ Δ •ฏۉ͋·ΓҙຯΛͳ͞ͳ͍ •ൺֱ৭Μͳ݅ͦΖͬͯͳ͍ͱҙຯͳ͍
ϨΠςϯγͷ؍ଌϙΠϯτ •ϨΠςϯγͰॏཁͳͷͦͷৼΔ͍()Λ؍ଌ͢Δ͜ͱ •50msʙ100msͰ༳Β͙γεςϜͱ50msʙ1000msͰ༳Β͙γεςϜͩ ͱલऀͷγεςϜͷํ͕҆ఆ͍ͯ͠Δ •Ұఆظؒʹ͓͚Δ95th percentile, 99th percentile, Max response
timeͳͲΛάϥϑʹग़͓ͯ͘͠ •ඪੑೳͷεϧʔϓοτ·Ͱ্͍͛ͯ͘ͱϨΠςϯγͲ͏ͳΔ ͔ʁڐ༰ൣғ͔ʁ
ෛՙͱ͖߹͏࣌ͷΞϓϩʔν •“ਪଌ͢ΔͳɺܭଌͤΑ” •USE Method •PHPͷ࣮ߦΞʔΩςΫνϟΛҙࣝ͢Δ
ਪଌ͢ΔͳɺܭଌͤΑ •ΊͪΌͪ͘Όେࣄ •ಛʹͳΕͳ͍͏ͪਖ਼ղͱͳΔνϡʔχϯάΛۮવͰ͖ͯବɻͲͷϝτϦΫε Λ͢ΕͦͷνϡʔχϯάΛ͖ͩ͢ͱ͍͏ߟ͑ʹḷΓண͚ͨͷ͔ɺͦͷࢥߟ ϓϩηε͕ॏཁ •ؒҧͬͨͱ͜ΖΛνϡʔχϯά͢Δͱ༨ܭੑೳ͕མͪΔͱ͍͏͜ͱ͋Δ ྫ͑DB͕ϘτϧωοΫͳͷʹwebͷΞΫηεϩάʹه͞Ε͍ͯΔϨεϙϯε λΠϜ͕͍ͷͰwebͷϫʔΧʔΛ૿͢ͱશମͷੑೳΉ͠ΖѱԽ͢Δɺͳ Ͳ
USE Method •Utilization Saturation and Errors (USE) Method By Brendan
Gregg •֤Ϧιʔεͷ༻ɺɺΤϥʔʹ͍ͭͯண͢Δ •දతͳϦιʔε CPU ϝϞϦʔ σΟεΫ ωοτϫʔΫ ͳͲ Mutex File Descriptors ͳͲ ཧϦιʔε ιϑτΣΞϦιʔε
PHPͷ࣮ߦΞʔΩςΫνϟΛҙࣝ͢Δ • Shared Nothing Architecture • ϦΫΤετຖʹ༷ʑͳใ͕ຖճॳظԽ͞ΕɺϦΫΤετಉ࢜ͷॲཧ͕͓ޓ͍ʹಠཱ͍ͯ͠Δ • લͷϦΫΤετͷॲཧ͕࣍ͷϦΫΤετʹӨڹΛ༩͑ͳ͍ •
ϦΫΤετຖʹϝϞϦղ์͢ΔͷͰϝϞϦϦʔΫͳͲͷ৺͕গͳ͍ • ঢ়ଶΛ͍࣋ͬͯͳ͍ͷͰεέʔϧΞτΛ͍͢͠ɻεέʔϧΞτͨ࣌͠ʹϦχΞʹ ύϑΥʔϚϯε্͕͕Γ͍͢ɻ • ϦΫΤετॲཧຖͷΦʔόʔϔου͕େ͖͍ • ϦΫΤετΛ·͍ͨͩใͷอ͕࣋Ͱ͖ͳ͍(APCuͳͲΛར༻͠ͳ͍ͱ͍͚ͳ͍) ϝϦοτ σϝϦοτ
PHPͷ࣮ߦΞʔΩςΫνϟΛҙࣝ͢Δ • ͜ͷ࣮ߦΞʔΩςΫνϟʹΑΔԸܙࢁ͋Δ͕ɺͻͱͭͷϦΫΤετॲཧʹண͢ΔͱΦʔόʔ ϔου͕ଟ͘ඞཁʹͳΓຊ࣭తʹ͍ • ͜ͷ࣮ߦΞʔΩςΫνϟΛҙࣝͯ͠PHP͕ۤखͳࣄͰؤுΒͳ͍Α͏ʹ͠Α͏ • 1ϦΫΤετ͋ͨΓʹॲཧ͢ΔࣄΛݮΒͯ͠ɺεέʔϧΞτͰԣʹͳΒͯύϑΥʔϚϯεΛ্ ͛Δͷ͕ૉͳΞϓϩʔν •
PHPͩͬͯؤுͬͨΒΕΔ!
͓·͚
͓͢͢Ίॻ੶
ISUCON
ISUCON
·ͱΊ
·ͱΊ •νϡʔχϯάͰϢʔβʔମݧͷ্Λࢦ͢ͳΒϑϩϯτΤϯυͷํ͕େࣄ •ෛՙࢼݧͰγεςϜͷඪੑɺεέʔϧੑɺݶքੑɺٱੑΛҙࣝ͠Α͏ •εϧʔϓοτɺϨΠςϯγͳͲجຊత֓೦ͱ͓༑ୡʹͳͬͯෛՙʹ͖߹͓͏ •Ͱ͖Δ͚ͩ؍ଌ͢ΔบΛΈʹ͚ͭΑ͏ •ͱΓ͋͑ͣISUCONͰΑ͏
ͦ͏͍ͬͯύϑΥʔϚϯενϡʔχϯά͍͠ • webΞϓϦέʔγϣϯͷγεςϜෳࡶͳͷͰ ͍͠ͷͨΓલ • ෳࡶͳγεςϜɺෳࡶͳϫʔΫϩʔυɻख़࿅͠ ͨਓͰݟޡΔ͜ͱ͠͠ɻ • ͔ͩΒͦ͜৬ਓٕ͚ͩͰͳ͘ɺ͏গ͠Պֶత ͳΞϓϩʔνඞཁ
ਖ਼͍͠؍ଌɺํ๏ͷཱ֬ɺମܥԽ • ͍͠ʂ͚Ͳָ͍͠
Happy Performance Engineering!
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠