Webアプリケーションの 遅い処理を特定する話

Webアプリケーションの 遅い処理を特定する話

メドレー開発部TechLunchで発表した内容を掲載しました。

メドレーで開発部では、隔週で社内勉強会が開かれています。
今回は、「Webアプリケーションの 遅い処理を特定する話」というタイトルで発表し、Ruby On Railsで動くアプリケーションにおける速度改善について勉強する機会となりました。

発表者:稲本竜介

D879794ea42768ea417f970914430d56?s=128

Medley Inc.

May 08, 2017
Tweet

Transcript

  1. 8FCΞϓϦέʔγϣϯͷ ஗͍ॲཧΛಛఆ͢Δ࿩ Ҵຊཽհ

  2. ࣗݾ঺հ w Ҵຊཽհ w δϣϒϝυϨʔ୲౰ͷΤϯδχΞ

  3. ࿩͢͜ͱ w 8FCΞϓϦέʔγϣϯͰ஗͍ॲཧΛಛఆ͢Δํ๏ w ओʹαʔόଆ

  4. ࿩͞ͳ͍͜ͱ w γεςϜϦιʔεʹ͍ͭͯ w $16 .FNPSZ /FUXPSL %JTL w Ͳ͏ૣ͘͢Δͷ͔

    w ֤छνϡʔχϯάํ๏
  5. ஗͍ॲཧΛಛఆ͢Δ

  6. w Ϣʔβʔʹݟ͑Δը໘ͷදࣔ଎౓Λվળ͠ετϨε ແ͘αʔϏεΛར༻ͯ͠΋Β͍͍ͨ w ཭୤ͷ཈ࢭɺ$73ͷ޲্

  7. Ͳ͏΍ͬͯಛఆ͢Δʁ

  8. /FX3FMJD

  9. /FX3FMJD w 8FC"QQMJDBUJPO w ΞϓϦέʔγϣϯαʔόʔʹඅ΍͞Εؚ͕ͨ࣌ؒ·Ε·͢ɻ w /FUXPSL w ϦμΠϨΫτ΍)5.-ͷཁٻͱड৴ʹඅ΍͞ΕΔؚ͕࣌ؒ·Ε·͢ɻαʔόʔ· ͨ͸੩తࢿ࢈ͷ࣌ؒ͸ؚ·Ε·ͤΜɻ

    w %PN1SPDFTTJOH w )5.-Λ%0.ʹղੳͯ͠ಉظεΫϦϓτΛऔಘ·ͨ͸࣮ߦ͢Δͷʹ͔͔Δ࣌ؒ Ͱ͢ EPDVNFOUSFBEZ ɻϒϥ΢βʔ͕͜ͷϑΣʔζͰΠϝʔδͷμ΢ϯϩʔυΛ։࢝͢ ΔͱɺϖʔδͷಡΈࠐΈλΠϛϯάͰΠϝʔδͷಡΈࠐΈ͕࣌ؒऔಘ͞Ε·͢ɻ w 1BHF3FOEFSJOH w %0.͕׬͔ྃͯ͠ΒXJOEPXMPBE͕ൃੜ͢Δ·Ͱͷ࣌ؒͰ͢ɻ w IUUQTEPDTOFXSFMJDDPNEPDTCSPXTFSOFXSFMJDCSPXTFSQBHFMPBE UJNJOHSFTPVSDFTQBHFMPBEUJNJOHQSPDFTT
  10. w Ͳͷϖʔδ͕ͲΕҐΞΫηε͞Ε͍ͯΔͷ͔ w ͲΕ͙Β͍ͷ଎౓ֻ͕͔͍ͬͯΔͷ͔

  11. /FX3FMJD

  12. /FX3FMJD w ࢀߟ w IUUQTEPDTOFXSFMJDDPNEPDTCSPXTFS OFXSFMJDCSPXTFSJOTUBMMBUJPO DPOpHVSBUJPOVSMXIJUFMJTUTHSPVQJOH CSPXTFSNFUSJDT

  13. w ΞϓϦέʔγϣϯ͔Β௥ͬͯΈΔ

  14. /FX3FMJD

  15. /FX3FMJD w .PTU5JNF$POTVNJOH w ϦΫΤετ਺ͱॲཧ࣌ؒΛ߹ܭͯ͠Ұ൪ॲཧ͕࣌ؒେ͖͍΋ͷ w 4MPXFTU"WFSBHF3FTQPOTF5JNF w ฏۉॲཧ͕࣌ؒ஗͍΋ͷ w

    "QEFY.PTU%JTTBUJTGZJOH w Ϣʔβʔͷຬ଍౓͕௿͍΋ͷ w )JHIFTU5ISPVHIQVU w εϧʔϓοτ͕ߴ͍΋ͷ w "QEFYʹ͍ͭͯ w IUUQTEPDTOFXSFMJDDPNEPDTBQNOFXSFMJDBQNBQEFY BQEFYNFBTVSJOHVTFSTBUJTGBDUJPO
  16. /FX3FMJD ٻਓৄࡉը໘

  17. w "1%&9 "QQMJDBUJPO1FSGPSNBODF*OEFY ͕ ௿͍ w ΞϓϦέʔγϣϯͷϨεϙϯελΠϜ͕஗͍ w NTҎ಺ʹ͸͍ͨ͠

  18. w ٻਓৄࡉը໘Λ௥ͬͯΈΔ

  19. $ISPNFEFWFMPQQFSUPPMT

  20. ɾ%PN$POUFOU-PBEFE ɾEPDVNFOUSFBEZ͕։࢝Ͱ͖ΔλΠϛϯά ɾ-PBE ɾ/FX3FMJDLͷ%PN1SPDFTTJOHͱଟ෼ಉ͡ ɾඞཁͳΞηοτʢը૾ͳͲʣͷಡΈࠐΈ͕ ׬ྃͨ࣌ؒ͠ EPDVNFOUSFBEZ ɾαʔόʔͷϨεϙϯεʹ͔͔ͬͨ࣌ؒ ɾ55'#ʢ5JNF5P'JSTU#ZUFʣ ɾϒϥ΢β͕#ZUF໨Λड͚औΔͷʹֻ͔ͬͨ࣌ؒ

    ˞αʔόʔͷϨεϙϯεʹֻ͔ͬͨ࣌ؒͱݴ͑Δ $ISPNF%FWFMPQQFS5PPMT
  21. w αʔόʔͷϨεϙϯλΠϜ NTʣ͸ͪΐͬͱ஗ ͍ w -PBE࣌ؒ͸ѱ͘ͳ͍ w Ξηοτؔ࿈͸$MPVE'SPOUY)551YH[JQͳͲ͸طʹ΍ͬͯ͋ Δͱ͍͏ͷ΋͋Δ

  22. w αʔόʔͷϨεϙϯελΠϜΛ௥ͬͯΈΔ

  23. QBSUJBMͷSFOEFSJOHˠ

  24. w ಛผ஗͍42-͸ͳͦ͞͏ w 3FOEFSJOHίετ͕ߴ͍Α͏ʹݟ͑Δ w ࠓճ͸͜ΕΛ௥ͬͯΈΔ

  25. w ۩ମతʹԿ͕஗͍ͷ͔΋ͬͱ౿ΈࠐΜͰௐ΂Δ

  26. w SBDLNJOJQSPpMFS w ؆୯ͳύϑΥʔϚϯεܭଌ͕ग़དྷΔ w QFFLSCMJOFQSPG w ίʔυͷߦ୯ҐͰ࣮ߦʹ͔͔ͬͨ࣌ؒΛڭ͑ͯ͘ΕΔ IUNM 

    w TUBDLQSPG w SVCZͷ࣮ߦʹ͔͔ͬͨ࣌ؒΛڭ͑ͯ͘ΕΔ w SBDLMJOFQSPG w ίʔυͷߦ୯ҐͰ࣮ߦʹ͔͔ͬͨ࣌ؒΛڭ͑ͯ͘ΕΔ MPH  w CVMMFU w / 2VFSZΛϩάग़ྗͯ͘͠ΕΔ w BDUJWFSFDPSEDBVTF w "DUJWF3FDPSEͷಡΈࠐΈ͕࣮ࡍʹτϦΨʔ͞Εͨ৔ॴΛڭ͑ͯ͘ΕΔ ܭଌʹ࢖͑Δ(FN
  27. w SBDLNJOJQSPpMFS w QFFLSCMJOFQSPG w TUBDLQSPG ܭଌʹ࢖͑Δ(FN

  28. w SBDLNJOJQSPpMFS

  29. ɾͬ͘͟Γ͸ݟΕΔ ɾ3FOEFSJOHͷ୯ҐͰղܾͰ͖ͦ͏ͳ఺͸νΣοΫ͠΍ͯ͘͢ྑ͍

  30. w 42-Ϩϕϧͷ໰୊ͳΒ͜ΕͰ΋ݟͯऔΕΔ w 3FOEFSJOH·Ͱ͔͠ΈΕͳ͍ͷͰ΋͏গ͠ৄ͘͠ ͠Γ͍ͨ

  31. w QFFLSCMJOFQSPG

  32. ɾߦ୯ҐͰֻ͔͍ͬͯΔ࣌ؒΛݟΔ͜ͱ͕ग़དྷΔ ɾSBDLNJOJQSPpMFSΑΓࡉ͔͘ݟΕΔ

  33. ɾ஗ͦ͏ͳॲཧΛൃݟ͕ͨ͠ʜ YYYYIUNMTMJN YYYY@DFMMSC 4FBSDIFSSC ʁ ʁ ʁ

  34. w ஗͘ͳ͍Α͏ʹΈ͑Δ w ͳΜͱͳ͘FMBTUJDTFBSDIͷॲཧͰֻ͕͔࣌ؒͬͯ ͦ͏

  35. w TUBDLQSPG

  36. ɾର৅ͷॲཧΛϓϩϑΝΠϦϯά TUBDLQSPG

  37. ɾର৅ͷॲཧΛϓϩϑΝΠϦϯά TUBDLQSPG

  38. ɾର৅ͷॲཧΛϓϩϑΝΠϦϯά TUBDLQSPG

  39. ɾର৅ͷॲཧΛϓϩϑΝΠϦϯά TUBDLQSPG ɾFMBTUJDTFBSDI͔Βड͚औͬͨKTPOΛ)BTIJF.BTIʹม׵͢ΔॲཧͰίετ ͕͔͔͍ͬͯΔ͜ͱ͕Θ͔ͬͨ

  40. 3VCZͷϓϩϑΝΠϦϯά·Ͱ΍ͬͯΘ͔ͬͨ݁Ռ w 3FOEFSJOHίετ͕ߴ͍Α͏ʹݟ͑Δ w ˠFMBTUJDTFBSDI͔Βड͚औͬͨKTPOΛΦϒ δΣΫτ΁ม׵͢Δίετ͕ߴ͔ͬͨ

  41. ·ͱΊ

  42. w ϒϥ΢βΛܦ༝ͨ͠ύϑΥʔϚϯε͸ w /FX3FMJD $ISPNF%FWFMPQFS5PPMTͳͲͰݟΔ͜ͱ͕ ग़དྷΔ w ΞϓϦέʔγϣϯͷύϑΥʔϚϯε͸ w SBDLNJOJQSPpMFS

    QFFLSCMJOFQSPG TUBDLQSPG w ਖ਼͘͠໰୊Λ೺Ѳ͢Δ͜ͱͰޡͬͨղܾํ๏Λબ୒ͯ͠ ͠·͏ϦεΫΛճආͰ͖Δ