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
1
4.4k
プロファイラを使ったPHPアプリケーション改善の勘所
PHPでのプロファイラを使ったパフォーマンスチューニングについて
Ryo Tomidokoro
January 30, 2019
Tweet
Share
More Decks by Ryo Tomidokoro
See All by Ryo Tomidokoro
100分で本番デプロイ!Laravelで作るWebアプリケーション作成/100min_web_app_cicd
hanhan1978
1
54
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
6
1.9k
集中して作業する技術/how_to_work_deeply
hanhan1978
62
46k
PHPでデータベースを作ってみた/create-data-with-php
hanhan1978
11
9.7k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
8
3.8k
B+木入門:PHPで理解する データベースインデックスの仕組み/b-plus-tree-101
hanhan1978
5
4.9k
ADRを一年運用してみた/our_story_about_adr
hanhan1978
5
2.1k
PHPで学ぶ Session の基本と応用 / web-app-session-101-2024
hanhan1978
13
5.7k
レガシー回避のPHP開発術/avoid_php_legacy
hanhan1978
17
13k
Other Decks in Programming
See All in Programming
PHP ステートレス VS ステートフル 状態管理と並行性 / php-stateless-stateful
ytake
0
110
GitHub Actions × RAGでコードレビューの検証の結果
sho_000
0
280
Serverless Rust: Your Low-Risk Entry Point to Rust in Production (and the benefits are huge)
lmammino
1
140
仕様変更に耐えるための"今の"DRY原則を考える
mkmk884
8
2.5k
Djangoにおける複数ユーザー種別認証の設計アプローチ@DjangoCongress JP 2025
delhi09
PRO
4
390
AWS Organizations で実現する、 マルチ AWS アカウントのルートユーザー管理からの脱却
atpons
0
160
Kubernetes History Inspector(KHI)を触ってみた
bells17
0
240
Amazon Q Developer Proで効率化するAPI開発入門
seike460
PRO
0
120
Django NinjaによるAPI開発の効率化とリプレースの実践
kashewnuts
1
150
Formの複雑さに立ち向かう
bmthd
1
890
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
180
CI改善もDatadogとともに
taumu
0
170
Featured
See All Featured
Side Projects
sachag
452
42k
Music & Morning Musume
bryan
46
6.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
630
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Optimizing for Happiness
mojombo
376
70k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
350
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
9
500
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
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 ελοϑͰϫϯνϟϯ…