プロファイラを使ったPHPアプリケーション改善の勘所

 プロファイラを使ったPHPアプリケーション改善の勘所

PHPでのプロファイラを使ったパフォーマンスチューニングについて

F04982ad61107b5408ad139966596316?s=128

Ryo Tomidokoro

January 30, 2019
Tweet

Transcript

  1. ϓϩϑΝΠϥΛ࢖ͬͨ PHPΞϓϦέʔγϣϯվળͷצॴ 1)1ษڧձ

  2. ໊લ෋ॴ྄ 3ZP5PNJEPLPSP ৬ۀ8FC"QQMJDBUJPO&OHJOFFS ॴଐ*OOPWBUPS+BQBO*OD ࡶ༻୲౰ झຯόεέοτϘʔϧ؍ઓ

  3. ຊ೔ͷ͓୊ʹ͍ͭͯ

  4. PHPΞϓϦέʔγϣϯվળ ύϑΥʔϚϯενϡʔχϯά ※ϦϑΝΫλϦϯάͰ͸ͳ͍

  5. ύϑΥʔϚϯενϡʔχϯάͱ͸ʁ

  6. ύϑΥʔϚϯενϡʔχϯάͱ͸ʁ ࠓճ͸ϨεϙϯελΠϜͷվળʹ͍ͭͯ ϓϩϑΝΠϥΛ࢖ͬͯཧ٧ΊͰߦ͏ํ๏

  7. ࣄલ஌ࣝͷ෮श

  8. 8FCΞϓϦέʔγϣϯ͕Ϣʔβʹಧ͘·Ͱ ࢀর) ωοτϫʔΫ͸ͳͥͭͳ͕Δͷ͔ʁ - ށࠜۈ (೔ܦBPࣾ) P10

  9. ίϯτϩʔϧͰ͖ͳ͍ཁૉ͕ଟ͍ ྫʣαʔϏεɾϓϩόΠμ Ϣʔβʔࣗ୐ͷωοτϫʔΫػثɾ᫔᫓ 8FCΞϓϦέʔγϣϯ͕Ϣʔβʹಧ͘·Ͱ

  10. ΞϓϦέʔγϣϯ୯ମͰ͸ग़དྷͳ͍ղܾ๏ ྫʣCDNͰίϯςϯπ·Ͱͷڑ཭ΛॖΊΔ Ұ෦ػೳΛSaaSʹ੾Γସ͑Δ 8FCΞϓϦέʔγϣϯ͕Ϣʔβʹಧ͘·Ͱ

  11. ֮͑ͯཉ͍͠ݴ༿ ϨΠςϯγʔ ଴ͭͨΊʹ͔͔ͬͨ࣌ؒΛܭଌͨ͠஋ ࢀর) ৄղγεςϜɾύϑΥʔϚϯε - Brendan Gregg ੢࿬ ༃ߛ

    ௕ඌ ߴ߂ (ΦϥΠϦʔδϟύϯ) P6 ༷ʑͳέʔεͰར༻͞ΕΔ HTTPͷϦΫΤετ͔ΒϨεϙϯε·Ͱ DBͷΫΤϦૹ৴͔Βσʔλड৴·Ͱ
  12. ϨΠςϯγʔͷܭଌ νϡʔχϯάͷલʹ͸ܭଌ͕ඞਢ ਪଌ͢ΔͳɺܭଌͤΑɻ

  13. ཧ༝ͳ͠ͷվળ͸/( αʔϏεӡӦʹແӨڹ ٕज़తຬ଍͚ͩΛٻΊΔͷ΋NG ࣌ؒ͸༗ݶ ؅ཧը໘ܥ ΄΅࢖ΘΕͳ͍ϨΞػೳ όονॲཧ ແҋʹϛυϧ΢ΣΞͱ͔ಋೖ͠ͳ͍

  14. νϡʔχϯάΛߦ͏ཧ༝ͷྫ SLA ΫϨʔϜ ίετ໘ Ṗͷ̏ඵϧʔϧͰ΋ɺແ͍ΑΓ͸Ϛγ ϨΠςϯγʔ໨ඪͷઃఆ ҰൠϢʔβɺιʔγϟϧΤΰαʔν αʔόʔ୆਺࡟ݮ ػձଛࣦΛͳ͘͢ɻTVCM౳ɻ

  15. ΍ͬͱຊ୊

  16. νϡʔχϯάͷର৅ ୯Ұαʔόͷੑೳ޲্ ࢀর) αʔό/ΠϯϑϥΛࢧ͑Δٕज़ - ٕज़ධ࿦ࣾ 4ষ όοΫΤϯυΤϯδχΞͷ੹຿ ˍίϯτʔϧՄೳͳྖҬ

  17. νϡʔχϯάͷྲྀΕ ϨΠςϯγʔͷܭଌ ໰୊ͷ͋Δϓϩηεͷಛఆ ϓϩϑΝΠϦϯά νϡʔχϯά ϨΠςϯγʔͷܭଌ

  18. ϓϩϑΝΠϦϯά ίʔυ࣮ߦ࣌ʹҰମͲͷॲཧʹͲΕ͘Β͍ͷ࣌ ͕͔͔͍ؒͬͯΔͷ͔Λܭଌͨ͠΋ͷ Α͏͢Δʹ… ҰମԿ͕໰୊ͳΜͩʂʁΛڭ͑ͯ͘ΕΔ

  19. ϨΠςϯγʔܭଌ WebΞϓϦ͸ϨεϙϯελΠϜͰOK Logʹग़ྗ curlͰ΋ԿͰ΋͍͍…ଌΕΕ͹ɻ Nginx : $request_time Apache : %D

  20. ࠓճར༻͢ΔϓϩϑΝΠϥ blackfire.io ଞҙ͸ແ͍Ͱ͢ɺݱ࣌఺Ͱൺֱతಋೖ͕؆୯ͳSaaS ※஫ҙ AlpineͰ͸ಈ࡞͠ͳ͔ͬͨͰ͢

  21. ϓϩϑΝΠϧ݁Ռ

  22. ϓϩϑΝΠϧ݁Ռ

  23. ϓϩϑΝΠϧ݁ՌΛධՁ վળՄೳͳ਺஋Λܭࢉ 969 - 449 = 520msec ϘτϧωοΫΛղফ͢Δͱ50%ఔ౓ੑೳվળ

  24. ϓϩϑΝΠϧ݁Ռ

  25. ϓϩϑΝΠϧ݁Ռ

  26. ϓϩϑΝΠϧ݁ՌΛධՁ վળՄೳͳ਺஋Λܭࢉ 514 - 185 = 329msec ϘτϧωοΫΛղফ͢Δͱ35%ఔ౓ੑೳվળ

  27. ϓϩϑΝΠϧ݁Ռ

  28. νϡʔχϯάͷྲྀΕ ϨΠςϯγʔͷܭଌ ໰୊ͷ͋Δϓϩηεͷಛఆ ϓϩϑΝΠϦϯά νϡʔχϯά ϨΠςϯγʔͷܭଌ

  29. େࣄͳ৺ಘ

  30. νϡʔχϯά࣌ͷඪޠ ϘτϧωοΫ͔Β໨ΛҳΒ͞ͳ͍ ؆୯Ͱখ͍͞վળʹಀ͛ͳ͍ ݪҼͱ݁Ռͷ๏ଇ ޮՌతͰͳ͍ ແବͳίʔυΛੜΉ

  31. ·ͱΊ

  32. ·ͱΊ ɾϓϩϑΝΠϦϯά͸ສೳͰ͸ͳ͍ ɾܭଌ͕ඞਢ ɾཧ٧ΊͷTry & Error ৭Μͳղܾ๏ͷதͷ̍ͭͰ͔͠ͳ͍ ৬ਓܳ͸ෆཁɻ਺ࣈͰޠΓ·͠ΐ͏

  33. ͞Βʹ஌Γ͍ͨਓ͸…

  34. ͓଴͓ͪͯ͠Γ·͢ -BSBWFM+1$POGFSFODF

  35. -BSBWFM+1$POGFSFODF ౰೔ελοϑͰϫϯνϟϯ…