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
プロファイラを使ったPHPアプリケーション改善の勘所
Search
Ryo Tomidokoro
January 30, 2019
Programming
2
4.6k
プロファイラを使ったPHPアプリケーション改善の勘所
PHPでのプロファイラを使ったパフォーマンスチューニングについて
Ryo Tomidokoro
January 30, 2019
Tweet
Share
More Decks by Ryo Tomidokoro
See All by Ryo Tomidokoro
フロントエンドがTypeScriptなら、バックエンドはPHPでもいいじゃない/php-is-not-bad
hanhan1978
8
13k
どうすると生き残れないのか/how-not-to-survive
hanhan1978
17
14k
100分で本番デプロイ!Laravelで作るWebアプリケーション作成/100min_web_app_cicd
hanhan1978
1
200
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
8
3.1k
集中して作業する技術/how_to_work_deeply
hanhan1978
65
51k
PHPでデータベースを作ってみた/create-data-with-php
hanhan1978
11
11k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
8
4.4k
B+木入門:PHPで理解する データベースインデックスの仕組み/b-plus-tree-101
hanhan1978
5
5.6k
ADRを一年運用してみた/our_story_about_adr
hanhan1978
5
2.5k
Other Decks in Programming
See All in Programming
はじめてのDSPy - 言語モデルを『プロンプト』ではなく『プログラミング』するための仕組み
masahiro_nishimi
3
710
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
580
One Enishi After Another
snoozer05
PRO
0
130
Developer Joy - The New Paradigm
hollycummins
1
240
All About Angular's New Signal Forms
manfredsteyer
PRO
0
190
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
15
6.1k
CSC509 Lecture 05
javiergs
PRO
0
300
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
310
フロントエンド開発のためのブラウザ組み込みAI入門
masashi
6
3.2k
Claude Agent SDK を使ってみよう
hyshu
0
1.3k
Swift Concurrency - 状態監視の罠
objectiveaudio
2
550
Writing Better Go: Lessons from 10 Code Reviews
konradreiche
0
3k
Featured
See All Featured
Bash Introduction
62gerente
615
210k
Code Review Best Practice
trishagee
72
19k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
49
51k
It's Worth the Effort
3n
187
28k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
880
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Docker and Python
trallard
46
3.6k
KATA
mclloyd
PRO
32
15k
Reflections from 52 weeks, 52 projects
jeffersonlam
353
21k
Balancing Empowerment & Direction
lara
5
690
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
600
Transcript
ϓϩϑΝΠϥΛͬͨ PHPΞϓϦέʔγϣϯվળͷצॴ 1)1ษڧձ
໊લॴ྄ 3ZP5PNJEPLPSP ৬ۀ8FC"QQMJDBUJPO&OHJOFFS ॴଐ*OOPWBUPS+BQBO*OD ࡶ༻୲ झຯόεέοτϘʔϧ؍ઓ
ຊͷ͓ʹ͍ͭͯ
PHPΞϓϦέʔγϣϯվળ ύϑΥʔϚϯενϡʔχϯά ※ϦϑΝΫλϦϯάͰͳ͍
ύϑΥʔϚϯενϡʔχϯάͱʁ
ύϑΥʔϚϯενϡʔχϯάͱʁ ࠓճϨεϙϯελΠϜͷվળʹ͍ͭͯ ϓϩϑΝΠϥΛͬͯཧ٧ΊͰߦ͏ํ๏
ࣄલࣝͷ෮श
8FCΞϓϦέʔγϣϯ͕Ϣʔβʹಧ͘·Ͱ ࢀর) ωοτϫʔΫͳͥͭͳ͕Δͷ͔ʁ - ށࠜۈ (ܦBPࣾ) P10
ίϯτϩʔϧͰ͖ͳ͍ཁૉ͕ଟ͍ ྫʣαʔϏεɾϓϩόΠμ ϢʔβʔࣗͷωοτϫʔΫػثɾ 8FCΞϓϦέʔγϣϯ͕Ϣʔβʹಧ͘·Ͱ
ΞϓϦέʔγϣϯ୯ମͰग़དྷͳ͍ղܾ๏ ྫʣCDNͰίϯςϯπ·ͰͷڑΛॖΊΔ Ұ෦ػೳΛSaaSʹΓସ͑Δ 8FCΞϓϦέʔγϣϯ͕Ϣʔβʹಧ͘·Ͱ
֮͑ͯཉ͍͠ݴ༿ ϨΠςϯγʔ ͭͨΊʹ͔͔ͬͨ࣌ؒΛܭଌͨ͠ ࢀর) ৄղγεςϜɾύϑΥʔϚϯε - Brendan Gregg ༃ߛ
ඌ ߴ߂ (ΦϥΠϦʔδϟύϯ) P6 ༷ʑͳέʔεͰར༻͞ΕΔ HTTPͷϦΫΤετ͔ΒϨεϙϯε·Ͱ DBͷΫΤϦૹ৴͔Βσʔλड৴·Ͱ
ϨΠςϯγʔͷܭଌ νϡʔχϯάͷલʹܭଌ͕ඞਢ ਪଌ͢ΔͳɺܭଌͤΑɻ
ཧ༝ͳ͠ͷվળ/( αʔϏεӡӦʹແӨڹ ٕज़తຬ͚ͩΛٻΊΔͷNG ࣌ؒ༗ݶ ཧը໘ܥ ΄΅ΘΕͳ͍ϨΞػೳ όονॲཧ ແҋʹϛυϧΣΞͱ͔ಋೖ͠ͳ͍
νϡʔχϯάΛߦ͏ཧ༝ͷྫ SLA ΫϨʔϜ ίετ໘ Ṗͷ̏ඵϧʔϧͰɺແ͍ΑΓϚγ ϨΠςϯγʔඪͷઃఆ ҰൠϢʔβɺιʔγϟϧΤΰαʔν αʔόʔݮ ػձଛࣦΛͳ͘͢ɻTVCMɻ
ͬͱຊ
νϡʔχϯάͷର ୯Ұαʔόͷੑೳ্ ࢀর) αʔό/ΠϯϑϥΛࢧ͑Δٕज़ - ٕज़ධࣾ 4ষ όοΫΤϯυΤϯδχΞͷ ˍίϯτʔϧՄೳͳྖҬ
νϡʔχϯάͷྲྀΕ ϨΠςϯγʔͷܭଌ ͷ͋Δϓϩηεͷಛఆ ϓϩϑΝΠϦϯά νϡʔχϯά ϨΠςϯγʔͷܭଌ
ϓϩϑΝΠϦϯά ίʔυ࣮ߦ࣌ʹҰମͲͷॲཧʹͲΕ͘Β͍ͷ࣌ ͕͔͔͍ؒͬͯΔͷ͔Λܭଌͨ͠ͷ Α͏͢Δʹ… ҰମԿ͕ͳΜͩʂʁΛڭ͑ͯ͘ΕΔ
ϨΠςϯγʔܭଌ WebΞϓϦϨεϙϯελΠϜͰOK Logʹग़ྗ curlͰԿͰ͍͍…ଌΕΕɻ Nginx : $request_time Apache : %D
ࠓճར༻͢ΔϓϩϑΝΠϥ blackfire.io ଞҙແ͍Ͱ͢ɺݱ࣌Ͱൺֱతಋೖ͕؆୯ͳSaaS ※ҙ AlpineͰಈ࡞͠ͳ͔ͬͨͰ͢
ϓϩϑΝΠϧ݁Ռ
ϓϩϑΝΠϧ݁Ռ
ϓϩϑΝΠϧ݁ՌΛධՁ վળՄೳͳΛܭࢉ 969 - 449 = 520msec ϘτϧωοΫΛղফ͢Δͱ50%ఔੑೳվળ
ϓϩϑΝΠϧ݁Ռ
ϓϩϑΝΠϧ݁Ռ
ϓϩϑΝΠϧ݁ՌΛධՁ վળՄೳͳΛܭࢉ 514 - 185 = 329msec ϘτϧωοΫΛղফ͢Δͱ35%ఔੑೳվળ
ϓϩϑΝΠϧ݁Ռ
νϡʔχϯάͷྲྀΕ ϨΠςϯγʔͷܭଌ ͷ͋Δϓϩηεͷಛఆ ϓϩϑΝΠϦϯά νϡʔχϯά ϨΠςϯγʔͷܭଌ
େࣄͳ৺ಘ
νϡʔχϯά࣌ͷඪޠ ϘτϧωοΫ͔ΒΛҳΒ͞ͳ͍ ؆୯Ͱখ͍͞վળʹಀ͛ͳ͍ ݪҼͱ݁Ռͷ๏ଇ ޮՌతͰͳ͍ ແବͳίʔυΛੜΉ
·ͱΊ
·ͱΊ ɾϓϩϑΝΠϦϯάສೳͰͳ͍ ɾܭଌ͕ඞਢ ɾཧ٧ΊͷTry & Error ৭Μͳղܾ๏ͷதͷ̍ͭͰ͔͠ͳ͍ ৬ਓܳෆཁɻࣈͰޠΓ·͠ΐ͏
͞ΒʹΓ͍ͨਓ…
͓͓ͪͯ͠Γ·͢ -BSBWFM+1$POGFSFODF
-BSBWFM+1$POGFSFODF ελοϑͰϫϯνϟϯ…