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
4k
プロファイラを使ったPHPアプリケーション改善の勘所
PHPでのプロファイラを使ったパフォーマンスチューニングについて
Ryo Tomidokoro
January 30, 2019
Tweet
Share
More Decks by Ryo Tomidokoro
See All by Ryo Tomidokoro
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.3k
B+木入門:PHPで理解する データベースインデックスの仕組み/b-plus-tree-101
hanhan1978
5
3.3k
ADRを一年運用してみた/our_story_about_adr
hanhan1978
4
1.3k
PHPで学ぶ Session の基本と応用 / web-app-session-101-2024
hanhan1978
12
4.7k
レガシー回避のPHP開発術/avoid_php_legacy
hanhan1978
14
11k
Laravel Collectionの計算量を調べてみた2023/laravel_collection_time_complexity_2023
hanhan1978
0
860
PHP で学ぶ Cache の距離の話 / study_cache_with_php
hanhan1978
7
1.8k
Laravel を低速化する技術 / how to slow laravel
hanhan1978
1
3k
俺の Laravel がこんなに速いわけがない! / My Laravel Too Fast
hanhan1978
0
1.6k
Other Decks in Programming
See All in Programming
Compose-View Interop in Practice (mDevCamp 2024)
stewemetal
0
110
Ruby Pattern Matching
bkuhlmann
0
920
try! Swift Tokyo 2024のLT枠に採択されたプロポーザルを出すときに考えていたこと
ski
0
350
見た目から始める生産性向上
ikumatadokoro
7
760
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
180
Git Rebase
bkuhlmann
11
1.6k
PHPはいつから死んでいるかの調査
chiroruxx
1
360
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
220
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
190
FigmaとPHPで作る1ミリたりとも表示崩れしない最強の帳票印刷ソリューション
ttskch
43
18k
Milestoner
bkuhlmann
1
410
Ruby GitHub Packages
bkuhlmann
0
630
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
124
32k
Documentation Writing (for coders)
carmenintech
59
3.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
356
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
19
1.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
220
21k
Side Projects
sachag
451
41k
Git: the NoSQL Database
bkeepers
PRO
422
63k
Ruby is Unlike a Banana
tanoku
96
10k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
Producing Creativity
orderedlist
PRO
336
39k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
1
3.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.4k
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 ελοϑͰϫϯνϟϯ…