SwooleでLaravelを高速化してみる

 SwooleでLaravelを高速化してみる

Swoole使うと早くなるよっていう話とLaravel遅いなぁっていう話がステレオで聞こえてくる今日このごろ。
ならばSwoole使ってLaravel早くすればいいじゃない!って思って、検証をしてみました。
確かに早くなったはいいのですが、それによって何が犠牲になっていったのか、果たして実用に向くのか、という内容で話した資料です。

775dca7a162761edb98f12d5b11387ce?s=128

NIIKURA Ryota

April 01, 2019
Tweet

Transcript

  1. -BSBWFMΛ4XPPMFͰ ߴ଎Խͯ͠ΈΔ 1)1FS,BJHJ ࿅അཱ۠۠ຽɾ࢈ۀϓϥβ$PDPOFSJϗʔϧ 4$065&3৽૔ྋଠ

  2. ϫλγ w UXJUUFS!OJJTBOUPLZP w ݩ޻ࣄ԰ w ΤϯδχΞྺ1)1FSྺZFBST w 8&#γεςϜΛ։ൃ͢Δ͓࢓ࣄ w

    ίϯςφ։ൃͨ͠Βӡ༻·Ͱ͍ͨ͠ਓ w ήʔϜ͕ͦΕͳΓʹ޷͖ͳਓ w ͨ·ʹ-5ͱ͔Ͱ஻Δਓ w ࠓ͸4$065&3ʹ͍·͢ ஻͖ͬͯͨྫ 1)1ΧϯϑΝϨϯεؔ੢ 1)1ΧϯϑΝϨϯεؔ੢ 1)1ΧϯϑΝϨϯεוా 1Z$PO
  3. ࠓ͸4$065&3 8FBSFIJSJOH

  4. ͍ͱ͕͜ຊग़͠·ͨ͠

  5. ΏΔ΅ ׂͱ੾࣮ w͓͢͢Ίͷ-JOVYϚγϯ͕͋ͬͨΒڭ͑ͯʂʂ w 04ͳ͠ͰΠν͔ΒೖΕΔͷͰ΋͋Γ w ͓͢͢ΊͷσΟετϦϏϡʔγϣϯ΋߹Θͤͯʂ w ϝϞϦ͸(#͋Ε͹े෼ͳؾ͕͢Δ

  6. ຊ୊

  7. ͓඼ॻ͖ w 4XPPMF w -BSBWFMʹ4XPPMFΛೖΕͯΈΔ w ಈ࡞ɾੑೳݕূ w ߟ࡯ͱ·ͱΊ

  8. 4XPPMF

  9. িܸͷهࣄ ͨͩͰ͑͞଎͍ͱධ൑ͷ#&"34VOEBZ͕4XPPMFͱ૊Έ߹ ΘͤΔ͜ͱʹΑͬͯɺ଎౓͕ഒʹͳΔͱ͍͏িܸ

  10. ͦ͏͍͑͹ɺੲɾɾɾ w ͓ͦΒ͘ΤΫεςϯγϣϯͰ͋ΔͳͲͷ ཧ༝ʹΑΓলུ͍ͯ͠Δ
 w ਅ໘໨ʹௐ΂͓͚ͯ͹Α͔ͬͨɻɻɻ

  11. 4XPPMF

  12. 4XPPMF w 1)1ʹΠϕϯτࣜͷඇಉظॲཧ΍ίϧʔνϯΛಋೖͯ͘͠ ΕΔΤΫεςϯγϣϯ w ΋ͪΖΜɺΠϕϯτϧʔϓܗࣜͷ8FCαʔόΛͨͯΔ͜ͱ ΋Ͱ͖Δ w த՚ύϫʔʹΑͬͯ࡞ΒΕ͍ͯΔ

  13. ҆૷ QFDM ιʔείʔυϏϧυ

  14. 4XPPMFXFCTFSWFS

  15. 4XPPMFXFCTFSWFS IUUQMPDBMIPTU ಠཱͨ͠8FC4FSWFSΛͨͯΔ͜ͱ͕Ͱ͖Δ

  16. Πϕϯτϧʔϓ ͜ͷΠϕϯτΩϡʔʹͨ·ΔΠϕϯτ͕ʮϦΫΤετʯͰɺ ίʔϧόοΫͰʮϨεϙϯεʯΛฦ͢ܗͰ8FCαʔόΛ࣮ݱ͢Δ

  17. 4XPPMFXFCTFSWFS w ಠཱͨ͠8FC4FSWFSʹͳΔ w Πϕϯτϧʔϓࣜͷ8FC4FSWFSͱͳ͍ͬͯͯɺॲཧΛ࣮ ߦ͢ΔϫʔΧʔͷϓϩηε͕֤ϦΫΤετʹରͯ͠࢖͍ճ ͞ΕΔ w ιʔείʔυͷಡΈࠐΈ΍ύʔε͕͸͡ΊͷಡΈࠐΈҰճ ͰࡁΉͷͰɺߴ଎Ͱͷಈ࡞͕ظ଴͞ΕΔ

  18. -BSBWFMPO4XPPMF

  19. -BSBWFM w 1)1ͷ8FCϑϨʔϜϫʔΫͷҰͭ w ௚ײతͰ࢖͍΍͍͢03. ʮ&MPRVFOUʯ಺ଂ w ̏͜͜೥ͣͬͱ࢖ͬͯΔ

  20. -BSBWFM஗͍఻આ IUUQXXXQIQCFODINBSLTDPNFO w -BSBWFMͷείΞ͸ϒʔϏʔ৆ w τοϓʹରͯ̏͠ഒڧ΋ࠩΛͭ ͚ΒΕ͍ͯΔ w ͱ͜ΖͰ6CJRVJUZͬͯͳʹʁ

  21. 4XPPMF࢖ͬͨΒૣ͘ͳΔʁ w #&"34VOEBZ͸̒ഒ΋ૣ͘ͳͬͨͱ͍͏͜ͱͰɺ -BSBWFM΋ૣ͘ͳΒͳ͍ͩΖ͏͔ w 4XPPMFͷ8FC4FSWFS͸ΠϕϯτϧʔϓࣜͰɺৗʹ࣮ߦ ঢ়ଶͳͷͰɺҰճಡΈࠐΜͩϑΝΠϧ͸ೋ౓ಡΈࠐΉඞཁ ͕ͳ͘ͳΔ w ಡΈࠐΈϑΝΠϧ਺ͷଟ͍

    ݸ͘Β͍ -BSBWFMͰ͋Ε ͹ɺιʔεͷಡΈࠐΈ΍ύʔεͷলུʹΑΔߴ଎ԽͷޮՌ ͕ΑΓظ଴Ͱ͖ͦ͏ʹݟ͑Δ
  22. -BSBWFMΛ4XPPMF Ͱಈ͔ͯ͠ΈΔ w ࣮૷ͱͯ͠͸ɺ4XPPMFͷαʔόΛ্ཱͪ͛ͯɺॲཧΛ -BSBWFMʹ΍ΒͤΔͱ͍͏ܗΛͱΔ w -BSBWFMΛ4XPPMF্Ͱಈ͔ͨ͢ΊͷϥΠϒϥϦ͕͍͔ͭ͘ ͋ͬͯɺࠓճ͸A-BSBWFM4Aͱ͍͏ͷΛ࢖͏

  23. -BSBWFMPO4XPPMF -BSBWFM4ͷΠϯετʔϧ -BSBWFM4ͷύϒϦογϡ IUUQTHJUIVCDPNIIYTWMBSBWFMT

  24. -BSBWFMPO4XPPMF -BSBWFM4ͷىಈ

  25. ݕূ

  26. ݕূͷํ๏ w ݕূαʔό͸.BDCPPL1SP্ͷ%PDLFSʹίϯςφΛཱ ͯͯ࡞Δ DQV (#NFNPSZ 
 BQBDIF /HJOY QIQGQN

    TXPPMFΛ༻ҙ w ෛՙΛ͔͚Δαʔό͸84-্ʹBCΛΠϯετʔϧͯ͠ ࢖༻ ͍Ζ͍Ζένͬͨ݁Ռ  w ຊ౰͸Ϋϥ΢υͰ΍Γ͔͕ͨͬͨɺෛՙݕূ༻͸ͩΊͬ ͍ͯ͏ͷͰɻɻɻ
  27. ୯७ͳJOEFYͷදࣔ IUUQMPDBMIPTU

  28. JOEFYੑೳൺֱ BCUDIUUQ

  29. JOEFYੑೳൺֱ·ͱΊ w ಉ࣌ϦΫΤετͱ͍͏ɺׂͱେ͖ΊͷෛՙΛ͔͚ͨ w ඵؒ͋ͨΓͷϦΫΤετ਺Ͱɺ4XPPMF͸/HJOY 1)1 '1.ͷഒ΋͋Δ w ͕͢͞ʹBQBDIF͕͓ͦ͗͢ΔΑ͏ʹݟ͑Δ͕ݪҼෆ໌

  30. ૣ͘ͳͬͨʂ

  31. Α͘ߟ͑ͯΈΔ w JOEFYදࣔ͢Δ͚ͩͷγεςϜ࡞Δ͜ͱ͸Ίͬͨʹͳ͍ w ೝূͱ͔%#ͷૢ࡞ͱ͔ w ཁ͢Δʹɺ࣮༻Ͱ࢖͑Δ͔Ͳ͏͔͕େࣄͷ͸ͣ

  32. ͱΓ͋͑ͣϩάΠϯ࡞Δ ˞ݕূͷͨΊʹ࡞ͬͨίʔυͰ͢ͷͰɺ঎༻؀ڥͰ͸ਅࣅ͠ͳ͍Ͱ͍ͩ͘͞

  33. ϫʔΧʔͷ਺ΛҰݸʹ͢Δ

  34. ϩάΠϯͯ͠ΈΔ

  35. ;Ή;Ή

  36. ϩάΠϯͷঢ়ଶΛݟΔ

  37. ҰମԿ͕ى͍ͬͯ͜Δͷ͔ɻɻɻ ;ͨΓͱ΋࣍࿠͘Μʂʂ

  38. Կ͕ىͬͨ͜ͷ͔ w ʮϩάΠϯʯ͢Δͱ"VUIVTFS ͕ࢦࣔ͢͠Ϣʔβʔ͕ ܾఆ͢Δ w ௨ৗͰ͋Ε͹ϨεϙϯεΛฦͨ͋͠ͱɺϓϩηε͕ऴྃ͠ɺ "VUIͷมߋ΋Ϧηοτ͞ΕΔ͕ɺ4XPPMFͰ͸ϓϩηε ͕ੜ͖ଓ͚ΔͷͰɺ"VUIͷঢ়ଶ΋ͦͷ··ʹͳΔ w

    ࣍ͷϦΫΤετʹରͯ͠ɺ"VUIVTFS ͷঢ়ଶ͕อ࣋ ͞Εͨ··ʹͳΔ
  39. ܦҢ  ॳظঢ়ଶ"VUIVTFS OVMM  Ұ࿠͘Μ͕ϩάΠϯ"VUIVTFS Ұ࿠͘Μ  ࣍࿠͘Μ͕ϩάΠϯ"VUIVTFS ࣍࿠͘Μ

     ࣍࿠͘Μͷ໊લ͸ʁ"VUIVTFS ࣍࿠͘Μ  Ұ࿠͘Μͷ໊લ͸ʁ"VUIVTFS ࣍࿠͘Μ
  40. ͜ΕͰղܾʂ w ঢ়ଶΛ࣋ͬͨγϯάϧτϯ΍੩తϓϩύςΟΛॲཧޙʹϦηοτ͢Δ
 DMFBOFSΛ༻ҙͯ͠΍Δͷͩ w DPOpHMBSBWFMTQIQͰઃఆՄೳ w Ϧηοτ͠ͳ͚Ε͹ͳΒͳ͍ঢ়ଶ͕͍ͭ͋͘Δͷ͔
 Θ͔Βͳ͍ͷ͕໰୊͕ͩɻɻɻ

  41. TMFFQ w ͱΓ͋͑͢ɺϦΫΤετ͞ΕͨΒඵ଴ͭ w ௕͍*0Λ૝ఆ͍ͯ͠Δ

  42. TMFFQੑೳൺֱ BCUDIUUQTMFFQ

  43. TMFFQੑೳൺֱ w 4XPPMF͕஗͘ͳ͍ͬͯΔʂʁ w ΠϕϯτϧʔϓܗࣜͷαʔόͳͷͰɺॲཧ଴͕ͪൃੜͯ͠ ͍Δͷ͔΋ w QIQGQN΋ϫʔΧʔͷ਺্͕ݶʹୡͯ͠଴͕ͪൃੜͯ͠ ͍Δͱߟ͑Δ w

    BQBDIF͸ϓϩηε੍ݶΛಛʹ͍ͯ͠ͳ͍ͷͰɺੑೳʹ໰ ୊Λٴ΅͞ͳ͔ͬͨͷ͔΋
  44. ͳΒ͹ඇಉظॲཧͩ w $PTMFFQͰίϧʔνϯͷTMFFQΛݺͿ͜ ͱ͕Ͱ͖Δ w ϫʔΧʔ͕Ұ౓ʹෳ਺ͷϦΫΤετΛड͚ ࣋ͯΔ w ͪͳΈʹɺެࣜͰ͸΍ΔͳͬͯݴΘΕ͍ͯΔ

  45. ඇಉظॲཧΛೖΕͨੑೳ BCUDIUUQTMFFQBTZOD w ඇಉظԽͷޮՌ͸͋Γͦ͏ BCUDIUUQTMFFQ

  46. ೦ͷҝೝূΛݟͯΈΔ wඵ଴ػ͔ͯ͠Βࣗ෼ͷ໊લΛग़ྗ͢Δ w଴ػத΋ϫʔΧʔ͸ଞͷϦΫΤετΛड͚෇͚Δ

  47. ͜͏ͳΓ·͢ σʔλ͕ࠞͬͨ͟ޙɺ͋ͱ͔Β ೖͬͨਓ͸ϩάΞ΢τ͠·͢

  48. ͪͳΈʹߴෛՙ w ॲཧΛ͍ͯ͠ΔϫʔΧʔ͕ಈ͔ͳ͘ͳ͍ͬͯΔ໛༷ w ҰͭͷϫʔΧʔ಺ʹ଴ػ͍ͯ͠ΔλεΫ਺͕ଟ͘ͳΔͱ ͜ͷࣄ৅͕ى͜Δ໛༷

  49. ·ͱΊ

  50. -BSBWFMͷ4XPPMFʹΑΔ ߴ଎Խʹ͍ͭͯ w είΞΛ্͛Δ͚ͩͷߴ଎ԽͳΒͰ͖Δ w -1ͷΑ͏ʹɺ͋·Γঢ়ଶΛ࣋ͨͳ͍Α͏ͳγεςϜͰ͋ Ε͹ɺߴ଎Խʹར༻ͯ͠΋ྑ͍ͱߟ͑ΒΕΔ w ศརͳ੩తϝιου΍γϯάϧτϯΛଟ༻͢Δ-BSBWFM͸ 4XPPMF8FCαʔόͰಈ͔͢ʹ͸ɺঢ়ଶͷϦηοτΛߟ

    ྀ͢Δඞཁ͕͋Γɺ͔ͳΓͷোน͕͋Δ
  51. 4XPPMFͷՄೳੑʹ͍ͭͯ w ୯७ͳߴ଎ԽͰ͋Ε͹ɺQSFMPBE΍+*5ͳͲɺ1)1ຊମͷ ରԠʹΑ࣮ͬͯݱ͞ΕΔՄೳੑ͕͋Δ w ͔͠͠ɺ)551ରԠ΍H31$αʔόԽ ༧ఆ ͳͲɺ1)1ຊ ମ͕ରԠ͠ͳ͍͜ͱʹ΋௅ઓ͍ͯ͠ΔͷͰɺ௥͍ͬͯͯଛ ͸ͳ͍

    w ࢖͏ͷͰ͋Ε͹ ݸਓతʹ͸ඇಉظͰδϣϒΛ౤͛Δͱ͖ ʹίϧʔνϯͷه๏Λ࢖͏ͷ͕͍͍ͱࢥ͍ͬͯΔ
  52. ·ͱΊ w ϕϯνϚʔΫʹΑΔͱ-BSBWFM͸ϑϨʔϜϫʔΫͷதͰ͸ ஗͍Β͍͠ w -BSBWFMΛ4XPPMFͰಈ͔͢͜ͱͰɺJOEFYͳͲͷ୯७ͳॲ ཧͷϖʔδग़ྗ͸ߴ଎Խ͢Δ w ੩తϝιου΍γϯάϧτϯΛଟ༻͢Δ-BSBWFMΛ4XPPMF Ͱಈ͔͢͜ͱ͸࣮༻తʹ͸೉͕͋Δ

  53. ͝ਗ਼ௌ͋Γ͕ͱ͏͟͝ ͍·͢ʂʂʂ