Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ピクシブ新広告サーバー構築物語

 ピクシブ新広告サーバー構築物語

ピクシブ2014夏インターン講義資料
構成だけでなく失敗談なども書いてあります

Kaneko Tatsuya

September 05, 2014
Tweet

More Decks by Kaneko Tatsuya

Other Decks in Technology

Transcript

  1. ϐΫγϒ৽޿ࠂαʔόʔ
    ߏங෺ޠ
    ʙԿΛߟ͑ɼԿͱઓͬͨͷ͔ʙ
    ϐΫγϒΠϯϑϥDBUBUTVZ

    View Slide

  2. ࣗݾ঺հ
    w DBUBUTVZͱ͍͏*%ͰΠϯλʔωοτ্Ͱ׆ಈ
    w ΧλπΠͱ͔ͬͯݺ͹Ε͍ͯΔ
    w ౦ژ޻ۀେֶ޻ֶ෦৘ใ޻ֶՊଔۀ
    w ʹେֶΛଔۀޙʹϐΫγϒೖࣾ
    w ΠϯϑϥͰमߦத
    w ࠓ೥ͷ৽ଔ
    w ޿ࠂαʔόʔͷΠϯϑϥ୲౰ʹ

    View Slide

  3. ࠓ೔࿩͢͜ͱ
    w ϐΫγϒ͕৽޿ࠂαʔόʔΛ࡞ͬͨཧ༝
    w ϐΫγϒ৽޿ࠂαʔόʔͷ։ൃͱឯ༨ۂં
    w ϐΫγϒ৽޿ࠂ഑৴αʔόʔΠϯϑϥશମ૾
    w ϐΫγϒ৽޿ࠂαʔόʔσϓϩΠ
    w ϐΫγϒ৽޿ࠂαʔόʔ؂ࢹํ๏

    View Slide

  4. ৽޿ࠂαʔόʔ։ൃϝϯόʔʢਓʣ
    CBTI$
    ؅ཧɾ഑৴αʔόʔϓϩτλΠϓ࡞੒
    ؅ཧɾ഑৴αʔόʔ։ൃ୲౰
    QJYJWͷ։ൃ΋૯ׅ
    3BJMTΤϯδχΞ
    ؅ཧαʔόʔ։ൃ୲౰
    DBUBUTVZʢࣗ෼ʣ
    ؅ཧαʔόʔΠϯϑϥ୲౰
    ഑৴αʔόʔ։ൃɾΠϯϑϥ୲౰
    ͳ͔ͥ؅ཧαʔόʔͷ+4΋ॻ͍ͨ

    View Slide

  5. ޿ࠂαʔόʔಛ௃
    w ؅ཧαʔόʔͱ഑৴αʔόʔͷ͕ͭ͋Δ
    w ؅ཧαʔόʔ͸ϚʔένʔϜ͕޿ࠂΛೖߘ͢Δ
    w ഑৴αʔόʔ͸ೖߘ͞Εͨ޿ࠂΛ഑৴ͯ͠ΠϯϓϨογϣϯ
    ਺ʢදࣔ਺ʣͱΫϦοΫ਺Λܭଌ͢Δ
    w ഑৴αʔόʔ͸গͳ͍αʔόʔ୆਺ͰQJYJWͱಉఔ౓ͷΞΫ
    ηεʹ଱͑ͳ͍ͱ͍͚ͳ͍
    w ॠ࣌ʹϨεϙϯεΛฦͤͳ͍ͱQJYJWͷϢʔβʔମݧͷ࣭͕
    ௿Լ͢Δ

    View Slide

  6. ݱߦ޿ࠂαʔόʔ
    w %FCJBO1)1ͱࣾ಺Ͱ͸ϨΨγʔ؀ڥ
    w %FCJBO1)1͕ࣾ಺ඪ४؀ڥ
    w "1$ͱ͍͏ڞ༗ϝϞϦͷػߏΛϑϧ׆༻ͯ͠ߴ଎ʹϨεϙϯεΛฦ͢
    w "1$͸1)1Ͱഇࢭ͞Ε͍ͯͯQJYJWͰ͸୅ସͷ"1$VΛ࢖༻
    w ͔͠͠"1$V͸όΪʔͳͷͰQJYJWͰ͸ݶఆతʹ࢖༻
    w ݱ޿ࠂαʔόʔ͸"1$ͷػೳΛ͔ͳΓ࢖͍ͬͯΔͨΊҠߦෆՄೳ
    w ΠϯϓϨογϣϯ਺ͷߋ৽͸͓͖࣌ؒͳͲ͔ͳΓׂΓ੾ͬͨઃܭͰߴ଎ͳϨεϙϯεΛ࣮ݱ
    w ΠϯϓϨογϣϯ਺͕ϦΞϧλΠϜʹ෼͔Βͳ͍ͱ໨ඪΠϯϓ਺ʹ౸ୡͤ͞Δͷ͕೉͍͠
    w ࣗಈΠϯϓϨογϣϯ਺ௐઅػೳ΋ͳ͍ͷͰखಈରԠ
    w ػೳ֦ு΋΄΅ෆՄೳ

    View Slide

  7. ؅ཧαʔόʔ
    w ϚʔένʔϜ͕޿ࠂΛೖߘ͢Δͷͱ഑৴αʔόʔͷܭଌ݁ՌΛอଘͯ͠ݟΕ
    ΔΑ͏ʹ͢Δ
    w ࣾ಺ͷਓ͔ؒ͠৮Βͳ͍ͷͰϦιʔε͸͋·Γׂ͚ͳ͍͕ɼۀ຿ޮ཰ʹؔΘ
    ΔͷͰϚʔένʔϜͷػೳཁ๬ʹ͸ਝ଎ʹରԠ͢Δඞཁ͕͋Δ
    w ؅ཧαʔόʔ͕޿ࠂαʔόʔͷ୯Ұো֐఺ʹͳΒͳ͍Α͏ʹ͢Δඞཁ͕͋Δ
    w ؅ཧαʔόʔ͕ࢮΜͰ΋޿ࠂͷ഑৴͸΍Γଓ͚ΔΑ͏ʹ
    w 3VCZPO3BJMTͰগͳ͍ϦιʔεͰ"1*ΛؚΊͯ࡞੒͢Δ͜ͱʹ
    w 3BJMT͸ϑϧελοΫϑϨʔϜϫʔΫͰ࠷খݶͷ࣮૷Ͱ༷ʑͳػೳ͕࢖͑Δ
    w +40/ܗࣜͷ"1*΋3VCZͩͱ࡞Γ΍͍͢

    View Slide

  8. ؅ཧαʔόʔ
    w σʔλϕʔε͸.Z42-Λ࢖༻
    w QJYJW͸.Z42-ͳͷͰେن໛.Z42-ӡ༻ͷϊ΢ϋ΢͕͋Δ
    w ޿ࠂσʔλ͸ফ͑Δͱ࠷ѱձ͕ࣾࢮ͵ͷͰ৴པੑͷߴ͍σʔλετΞΛ࢖͍͍ͨ
    w ࠓ·Ͱ.Z42-͕ݪҼͰσʔλΛফࣦͨ͜͠ͱ͕ແ͍ͷͰ৴པੑ͸ߴ͍
    w ഑৴͢Δ޿ࠂσʔλΛ+40/ͷ"1*ܦ༝Ͱ഑৴αʔόʔʹ
    w ؅ཧαʔόʔ͕Ұ࣌తʹࢮΜͰ΋഑৴αʔόʔʹӨڹ͕ग़ͳ͍Α͏ʹ
    w ഑৴αʔόʔ͕දࣔɾΫϦοΫ਺ͷूܭ݁ՌΛ؅ཧαʔόʔͷ.Z42-ʹ௚઀ॻ͖
    ࠐΉ
    w "1*ܦ༝Ͱ΋ྑ͔͕ͬͨ%#ʹ਺஋Λॻ͖ࠐΉ͚ͩͳͷͰͲͪΒͰ΋໰୊͸ͳ͍

    View Slide

  9. ؅ཧαʔόʔ
    w 3VCZPO3BJMT͸ࣾ಺Ͱ΋࠾༻ྫ͕ଟ͍ͷͰϊ΢ϋ΢͕͋Δ
    w #005)8PSME$PTQMBZQJYJWίϛοΫFUD
    w αʔόʔ͸6OJDPSOͰσϓϩΠ͸$BQJTUSBOP
    w ࣾ಺Ͱ΋࠾༻࣮੷͕͋Δ
    w $BQJTUSBOP͸3VCZ੡ͳͷͰ3VCZपΓͷػೳ͕ॆ࣮͍ͯ͠Δ
    w 6OJDPSO͸3BDLΞϓϦέʔγϣϯ޲͚ͷQSFGPSLܕαʔόʔ
    w ΠϯϑϥΤϯδχΞͱͯ͠޻෉ͨ͠ͱ͜Ζ͸ಛʹͳ͍
    w ࣾ಺͔Β͔͠ΞΫηε͕དྷͳ͍ͷͰ3BJMTΞϓϦ͕ಈ͔ͤΕ͹े෼

    View Slide

  10. 3BDL$BQJTUSBOP6OJDPSO
    w 3BDL
    w 3VCZͷͨΊͷαʔόʔͱ8FCΞϓϦέʔγϣϯؒͷ΍ΓऔΓΛ୲౰
    w 3BDLʹଇͬͯ࡞ΒΕͨ8FCΞϓϦέʔγϣϯ͸3BDL༻ͷαʔόʔͰಈ͔͢͜ͱ͕Մೳ
    w 3BJMT4JOBUSBͳͲओཁͳ3VCZͷ8FCϑϨʔϜϫʔΫ͸ରԠ
    w $BQJTUSBOP
    w σϓϩΠͳͲࣗಈԽ͍ͨ͠αʔόʔૢ࡞ΛࣗಈԽ͢Δπʔϧ
    w 3VCZ੡ͳͷͰ3VCZपΓͷػೳ͕ॆ࣮
    w γΣϧεΫϦϓτͩͱԿ͔ΒԿ·Ͱࣗ෼Ͱॻ͔ͳ͍ͱ͍͚ͳ͍ͷͰָͰอकੑ΋ߴ͘ͳΔ
    w 6OJDPSO
    w ਓؾͷߴ͍3BDL༻αʔόʔ

    View Slide

  11. w ਌ϓϩηε͕ΞϓϦέʔγϣϯΛϩʔυͯ͠ιέοτϑΝΠϧΛ࡞੒͢Δ
    w GPSLͯ͠ࢠϓϩηεΛ࡞Δ
    w ͜Ε͕XPSLFSϓϩηεʹͳΔ
    w GPSLͳͷͰιέοτϑΝΠϧͷϑΝΠϧσΟεΫϦϓλͳͲͷϦιʔε͸ڞ༗͞ΕΔ
    w $PQZPO8SJUFͳͷͰࢠϓϩηε͕վΊͯΞϓϦέʔγϣϯΛϩʔυ͢Δඞཁ͸ͳ͍
    w ͋Β͔͡ΊGPSLΛ͓ͯ͘͠ͷͰQSFGPSLͱݺ͹ΕΔ
    w XPSLFS͕SFRVFTUΛҾ͖ड͚ͯऴྃ࣍ୈ࣍ͷϦΫΤετΛड͚Δ
    w XPSLFS͸͋Δఔ౓ͷϦΫΤετΛड͚ΔͱNBTUFSͱͷϝϞϦͷဃ཭͕େ͖͘ͳΓϝϞϦΛᷰ͏Α͏ʹ
    ͳΔͷͰNBTUFSϓϩηε͕XPSLFSΛఆظతʹLJMMͯ͠৽͘͠GPSL͢Δ
    unicorn(master) unicorn(worker)
    unicorn(worker)
    unicorn(worker)
    unicorn(worker)
    ਌ϓϩηε ࢠϓϩηε
    socket
    'PSL
    4PDLFU࡞੒
    ϑΝΠϧ
    σΟεΫϦϓλ

    View Slide

  12. ഑৴αʔόʔ
    w ࠷΋ٕज़త՝୊͕େ͖͍
    w গͳ͍αʔόʔ୆਺ͰQJYJWͱ΄΅ಉ͡ΞΫηε਺Λ͞͹͘ඞཁ͕͋Δ্ʹߴ଎ʹ޿ࠂσʔ
    λΛฦ͢ඞཁ͕͋Δ
    w ܭଌϛε͸͋ͬͯ͸ͳΒͳ͍ͷͰ৴པੑͷߴ͍γεςϜͰ͋Δඞཁ͕͋Δ
    w མͪͨΒͦͷ෼ձࣾͷऩӹ͕མͪΔ্ʹ௕࣌ؒ෮ؼͰ͖ͳ͍ͳΒิరͷඞཁ͕ग़ͯେ੺ࣈ
    w ΠϯϑϥΤϯδχΞͱͯ͠։ൃʹ΋ؔΘΔ
    w ϐΫγϒͰ͸ΠϯϑϥͰ΋ඞཁʹԠͯ͡։ൃ͢Δ
    w Πϯϑϥ͔ͩΒίʔυ͸ॻ͔ͳ͍Έ͍ͨͳձࣾ΋͋ΔΒ͍͕͠ɼϐΫγϒͰ͸ͦ͏͍͏
    ͜ͱ͸ͳ͍
    w ಛʹύϑΥʔϚϯεपΓ΍ϛυϧ΢ΣΞͷબ୒ͳͲ͸Πϯϑϥ͕ਂؔ͘ΘΔඞཁ͕͋Δ

    View Slide

  13. %/4
    UZQFUBJM
    ޿ࠂ഑৴αʔόʔ
    ؅ཧαʔόʔ
    .Z42-
    qVFOUE qVFOUE
    /(*/9
    ը૾
    $"$)&
    LTLMPH NFNDBDIFE
    ޿ࠂσʔλ
    "QQMJDBUJPO (PMBOH

    දࣔ਺
    ΫϦοΫ਺
    6/*9υϝΠϯιέοτ
    $JSDVT
    ޿ࠂσʔλ
    ܭଌ݁Ռ
    ϥ΢ϯυϩϏϯ
    6/*9υϝΠϯιέοτ
    ϑΝΠϧσΟεΫϦϓλ

    View Slide

  14. ഑৴αʔόʔઃܭ
    w ܰྔͳ,74ʹ޿ࠂσʔλΛอଘ͓͍ͯͯ͠ϦΫΤετʹԠͯͦ͡ͷσʔλΛฦ
    ͢ΞϓϦέʔγϣϯ
    w ը૾σʔλ΋ಉ༷ʹ഑৴͢Δ͕Ωϟογϡ͓͖ͯ͠ը૾ੜ੒͕ෳ਺ճߦΘΕͳ
    ͍Α͏ʹ͢Δ
    w ը૾σʔλࣗମͷදࣔ਺ΛܭଌΛ͢Δ͜ͱ͸ͳ͍
    w ը૾σʔλΛ౎౓ੜ੒ͨ͠Β͕͔͔࣌ؒΓ͗͢Δ
    w දࣔ΍ΫϦοΫ͕͞ΕΕ͹ϑΝΠϧʹॻ͖ࠐΉʢLTLMPHʣ
    w qVFOUEͰLTLMPHΛ؂ࢹͯ͠ܭଌ݁ՌΛ؅ཧαʔόʔͷ.Z42-ʹॻ͖ࠐΉ
    w άϩʔόϧ*1ͰϢʔβʔͷϦΫΤετΛ௚઀ड͚Δ͜ͱͰߴ଎ʹϨεϙϯεฦ٫

    View Slide

  15. qVFOUE
    w 3VCZ੡ͷϩάऩूιϑτ΢ΣΞ
    w %4-ͰॲཧΛॻ͍͍ͯ͘
    w ϩάϑΝΠϧΛଞͷαʔόʔʹू໿ͤ͞Δ
    w ϩάΛղੳͯ݁͠ՌΛͲ͔͜ʹ౤͛Δ
    w ϓϥάΠϯ͕ॆ࣮͍ͯͯ͠ઃఆΛॻ͚ͩ͘Ͱ༷ʑͳػೳ͕ར༻Մೳ
    w ࣦഊ࣌ʹϦτϥΠͨ͠Γɼॏෳͯ͠ૹΒͳ͍ػೳͳͲ͕͋Δ
    w QJYJWͰ͸ओʹΞΫηεϩάɾΤϥʔϩάऩूΛͯ͠Ϣʔβʔͷಈ޲
    ֬ೝ΍Τϥʔݕ஌ͳͲʹ࢖ΘΕΔ͜ͱ͕ଟ͍

    View Slide

  16. ωοτϫʔΫͷ৑௕Խ
    w άϩʔόϧ*1Ͱ௨৴͢ΔͷͰԿ͔͕ނোͯ͠௨৴Ͱ͖ͳ͘ͳΔͱҰ੾Կ΋Ͱ
    ͖ͳ͘ͳΔ
    w έʔϒϧͷஅઢɾ/*$ނোɾεΠονϙʔτނোɾεΠονނো
    w ͜͏͍ͬͨނো͸සൟʹى͜Δ
    w ނোͯ͠΋େৎ෉ͳΑ͏ʹ৑௕Խ͢Δඞཁ
    w ৑௕Խͱ͸Ұ෦ͷγεςϜো֐ʹඋ͑ͯ༧උ૷ஔͳͲΛ༻ҙ͓ͯ͘͜͠ͱ
    w ෳ਺ͷ/*$Λ༻ҙͯ͠ผͷεΠονʹ઀ଓ
    w ͦΕͧΕͷ/*$ʹಉ͡*1ΞυϨεΛ෇͚ͯยํ͕ނোͨ͠ΒࣗಈͰ੾Γସ
    ΘΔΑ͏ͳ࢓૊Έʹ͍ͨ͠

    View Slide

  17. #POEJOH
    w -JOVYΧʔωϧͷϞδϡʔϧͷͭ
    w ෳ਺ͷ/*$Λ·ͱΊͯͭͷ࿦ཧ/*$ͱͯ͠ѻ͑ΔΑ͏ʹͳΔ
    w ϐΫγϒͰ͸جຊతʹނো͢Δ·ͰͭΊͷ෺ཧ/*$ͷΈΛ࢖ͬͯނো࣌ʹ੾Γସ͑Δ
    BDUJWFCBDLVQΛ࢖༻
    w ͜Ε͕Ұ൪ѻ͍΍͍͢Β͍͠
    w ݱࡏ.** .FEJB*OEFQFOEFOU*OUFSGBDF
    ؂ࢹΛ࢖ͬͯ෺ཧ/*$ͷ-JOL%PXOͯ͠ͳ͍
    ͔؂ࢹ
    w ௿ίετʹ؂ࢹՄೳ
    w -JOL%PXOͯ͠ͳ͍ͷʹ௨৴Ͱ͖ͳ͍ঢ়گͰରԠ͕Ͱ͖ͳ͍
    w "31؂ࢹΛ͢Ε͹௨৴Ͱ͖ͳ͍ঢ়گͰ΋೺ѲͰ͖Δ͕ߴίετ

    View Slide

  18. ഑৴αʔόʔϓϩτλΠϓ
    w ϓϩτλΠϓ͸3VCZͷϑϨʔϜϫʔΫ1BESJOP੡ͰσʔλετΞͱͯ͠(SPPOHBΛ࢖༻
    w (SPPOHB͸શจݕࡧΤϯδϯͱͯ͠։ൃ͞Ε͓ͯΓܰྔͳ,74ͱͯ͠࢖͏ʹ͸޲͔ͳ͍
    w ଎౓ɾ҆ఆੑɾ৴པੑతʹࠓճͷ഑৴αʔόʔʹ͸޲͔ͳ͍ͱ൑அ
    w ܰྔͳ,74ͱͯ͠NFNDBDIFEΛఏҊ
    w ొ࿥͞Ε͍ͯΔ޿ࠂσʔλ͸๲େ͕࣮ͩࡍʹͦͷ࣌഑৴͠ͳ͚Ε͹޿ࠂσʔλ͸গͳ
    ͍
    w ݩσʔλ͸؅ཧαʔόʔ͕શ͍ͯ࣋ͬͯΔͷͰ഑৴αʔόʔ্ʹӬଓσʔλΛ࣋ͭඞ
    ཁ͸ͳ͍
    w େن໛ͳ8FCΞϓϦέʔγϣϯͰ΋࠾༻ྫ͕ଟ͘ɼ଎౓ɾ҆ఆੑɾ৴པੑͲΕ΋ߴ
    ͍

    View Slide

  19. 1BESJOP
    w 4JOBUSBϕʔεͷ8FCΞϓϦέʔγϣϯϑϨʔϜϫʔΫ
    w 4JOBUSB͸ඇৗʹγϯϓϧͳ3BDLϕʔεͷ8FCΞϓϦέʔγϣϯϑϨʔϜϫʔΫ
    w جຊతʹ%4-ͰϧʔςΟϯάͷΈΛߦ͏
    w ੔ͬͨ4JOBUSBͱ͍͏ײ͡
    w 4JOBUSBͷ஌ࣝ͸΄΅ͦͷ··׆͔ͤΔ
    w 3BJMTΑΓ΋ػೳ͸গͳ͍͕΄ͱΜͲͷ৔߹ࠔΒͳ͍ͱࢥ͏
    w ࠓճ͸αʔόʔʹ6OJDPSOΛ࢖༻
    w 3BJMTΞϓϦͰࣾ಺Ͱ΋ಋೖ࣮੷͕͋Δ
    w ؅ཧαʔόʔͰ΋࢖͍ͬͯΔ

    View Slide

  20. NFNDBDIFE
    w ,74ͱͯ͠ͱͯ΋ஶ໊Ͱ࠾༻ྫ΋ଟ͍
    w ,FZ7BMVF4UPSF
    w NFNDBDIFE͸Ωʔ΋όϦϡʔ΋จࣈྻͷΈ
    w 'BDFCPPL(PPHMFͳͲ౤ೖ࣮੷͸਺஌Εͣ
    w ϝϞϦΩϟογϡͳͷͰӬଓσʔλ͸อଘͰ͖ͳ͍
    w ऴྃͨ͠Βσʔλ͸ফ͑ͯ͠·͏
    w อଘͰ͖Δ༰ྔ͸ϝϞϦΩϟογϡͳͷͰগͳ͍
    w ઃఆʹΑΔ͕౥ࡌϝϞϦҎ্͸อଘͰ͖ͳ͍
    w ߴ଎͔ͭ҆ఆ͍ͯ͠ΔͷͰΩϟογϡͱͯ͠Α͘ར༻͞ΕΔ

    View Slide

  21. 3VCZʹΑΔ഑৴αʔόʔ
    w 1BESJOP੡Ͱ,74ͱͯ͠NFNDBDIFEΛ࢖༻ͯ͠ݕূ
    w ϓϩϑΝΠϦϯάΛऔΓͳ͕ΒϘτϧωοΫΛͳ͍ͯ͘͘͠
    w ϓϩϑΝΠϦϯάʹϑϨʔϜϫʔΫ૚͔͠ग़ͯ͜ͳ͘ͳ͖ͬͯͨͷͰ1BESJOPґଘΛ֎͠
    ͯ4JOBUSBΞϓϦʹ
    w BC "QBDIF#FODI
    "QBDIF+.FUFSΛ࢖ͬͯੑೳΛνΣοΫ
    w ͦΕͰ΋໨ඪͷੑೳ͕ग़ͤͣɼ6OJDPSOҎ֎ͷαʔόʔͰݕূ
    w 6OJDPSO͕΋ͬͱ΋ੑೳ͕ߴ͍ͱ͍͏݁Ռʹ
    w +3VCZͰಈ͘Α͏ʹϦϥΠτͯ͠+3VCZ༻ͷଞͷαʔόʔ΋ݕূ
    w ݁ہ6OJDPSOΛ௒͑ΔੑೳΛग़ͤͣ3VCZʹΑΔ࣮૷Λஅ೦
    w ࠓճͷ޿ࠂ഑৴αʔόʔͰͷ࿩ͰҰൠతʹ6OJDPSO͕଎͍ͱ͍͏Θ͚Ͱ͸ͳ͍

    View Slide

  22. (PMBOHͰϦϥΠτ
    w ύϑΥʔϚϯεΛٻΊͯ(PݴޠͰͷϦϥΠτ
    w (Pݴޠ͸(PPHMF͕࡞ͬͨ৽͍͠ϓϩάϥϛϯάݴޠ
    w --ΑΓ΋$ݴޠʹ͍ۙ
    w ίϯύΠϧܕ
    w (PSPVUJOFTΛ࢖͏ͱ؆୯ʹϚϧνεϨουʹ
    w (PSPVUJOFTΛ࢖ͬͯϚϧνεϨουͳαʔόʔΛ࣮૷
    w ୯७ʹϦϥΠτ͚ͩͰ଎͘ͳΔΘ͚Ͱ͸ͳ͔ͬͨ
    w NFNDBDIFEΛ࢖͏఺ͳͲجຊతͳ෦෼͸શͯ౿ऻ
    w αʔόʔͱͯ͠ͷ౤ೖ͸౰࣌ࣾ಺ॳ

    View Slide

  23. ௒ࢲత1)1WT3VCZWT(P
    w 1)1͸"QBDIF্Ͱಈ͘ศརςϯϓϨʔτΤϯδϯΛॻ͘ײ͡
    w ศརؔ਺͸QIQOFUͰݕࡧ͢Ε͹ḿΔ
    w 3VCZ͸ϑϨʔϜϫʔΫΛ௨ͯ͡3BDLΞϓϦέʔγϣϯΛॻ͘ײ͡
    w ϑϨʔϜϫʔΫͷίʔυΛಡΉ͜ͱ͕ଟ͍
    w ίʔυΛॻ͘ͱ͖͸3BDLΑΓԼͷ͜ͱΛҙࣝ͢Δ͜ͱ͸͋·Γͳ͍
    w (P͸JNQPSUbOFU`ͱ͔͢Δͱ਺ߦͰαʔόʔΛىಈͰ͖ΔͷͰޙ͸Α͠ͳʹ
    Ͱ͖Δ
    w HPEPD͕෼͔Γ΍͍͢ͷͰͦΕΛಡΉ
    w جຊతʹඞཁͳॲཧΛશ෦ࣗ෼Ͱॻ͘ඞཁ͕͋Δ

    View Slide

  24. /HJOYͱ(PΛܨ͙
    w ϢʔβʔͷϦΫΤετΛ௚઀(P͕ड͚ΔͷͰ͸ͳ͘/HJOYͰड͚͍ͨ
    w ϢʔβʔͷϦΫΤετΛόοϑΝϦϯάͯ͘͠ΕΔͷͰίωΫγϣϯͷอ࣋ͳͲ໘౗ͳ
    ͜ͱΛߟ͑Δඞཁ͕ͳ͘ͳΔ
    w (PͰ͸௿஗ԆͰϨεϙϯεΛฦ͢͜ͱ͚ͩΛߟ͑Ε͹Α͍
    w ΞΫηεϩάͳͲ͕؆୯ʹ࢒ͤΔ
    w ΞΫηε੍ޚͳͲ؆୯
    w ΩϟογϡͷػߏͳͲ͕؆୯ʹ࢖͑Δ
    w ࣾ಺ʹϊ΢ϋ΢͕ଟ͋͘Δ
    w (PͰUDQΛMJTUFOͯ͠ىಈͨ͠αʔόʔʹରͯ͠QSPYZ@QBTT͢Δͱ஗͗͢Δ
    w 6/*9EPNBJOTPDLFUΛMJTUFOͯ͠αʔόʔΛىಈ͢Δඞཁ͕͋Δ

    View Slide

  25. 6/*9EPNBJOTPDLFU
    w ϓϩηεؒ௨৴
    w ಉҰϚγϯ্ͳΒ਌ࢠؔ܎ͳͲ͕ແͯ͘΋௨৴͕Ͱ͖Δ
    w UDQͳͲΑΓ΋҆ఆɾߴ଎ʹಈ͘
    w NFNDBDIFEͱͷ௨৴ʹ΋࢖༻͢Δͱߴ଎͔ͭ҆ఆతʹಈ࡞ͤ͞Δ͜ͱ͕
    Ͱ͖Δ
    w ΋ͪΖΜ࢖༻͍ͯ͠Δ
    w ϐΫγϒࣾ಺Ͱ͸গͳ͍ϦιʔεͰେྔͷΞΫηεΛߴ଎ʹ͞͹ͨ͘Ίʹࢸ
    Δͱ͜ΖͰ࠾༻͞Ε͍ͯΔ
    w (Pͷ৔߹OFU-JTUFO VOJY QBUI
    ͷΑ͏ʹ͢Ε͹Α͍

    View Slide

  26. IPUEFQMPZ
    w %/4ϥ΢ϯυϩϏϯͷͨΊִ཭͕ࠔ೉
    w ޿ࠂαʔόʔ͸"84Ͱ͸ͳ͍ͷͰ&-#͸࢖͑ͳ͍
    w QJYJWपลαʔϏε͸ίετ໘͔Β"84Λ࢖Θͳ͍
    w ௒େྔֆഅɾQJYJWࣣ༦୹࡭ࡇͳͲظؒݶఆͷ΋ͷʹ͸"84͸࢖
    ΘΕ͍ͯΔ
    w ݱࡏͷ޿ࠂۀքͰ͸"84Λ࢖͏ͷ͕ଟ͍ͷͰ&-#Λ࢖ͬͯ
    IPUEFQMPZΛ࣮ݱ͍ͯ͠Δձ͕ࣾଟ͍
    w ޿ࠂαʔόʔͳͷͰσϓϩΠ࣌ʹμ΢ϯλΠϜ͕ൃੜͯ͠͸͍͚ͳ͍

    View Slide

  27. $JSDVT
    w .P[JMMB͕࡞ͬͨ1ZUIPO੡ͷϓϩηε؅ཧπʔϧ
    w $JSDVTࣗମ͕ιέοτϑΝΠϧΛ࣋ͬͯɼΞϓϦέʔγϣϯ͸ϑΝΠϧσΟε
    ΫϦϓλΛ-JTUFOͤͯ͞ىಈ͢Δ
    w OFU'JMF-JTUFOFS PT/FX'JMF VJOUQUS GE


    ͷΑ͏ʹ͢Δ
    w σϓϩΠ࣌ʹ৽͍͠ϓϩηε͕ىಈ͔ͯ͠Βݹ͍ϓϩηεΛLJMM͢Δ
    w μ΢ϯλΠϜͳ͠ͰΞϓϦέʔγϣϯΛೖΕସ͑Δ͜ͱ͕Ͱ͖Δ
    w ઃఆϑΝΠϧΛॻ͘ͱ͍͍ײ͡ʹىಈͯ͘͠ΕΔ
    w DJSDVTDUMͱ͍͏ίϚϯυπʔϧܦ༝Ͱૢ࡞͢Δ
    w %FCJBOͷઃఆϑΝΠϧ͸ެࣜ(JU)VCϦϙδτϦʹ͋Δ

    View Slide

  28. $JSDVT΁ϓϧϦΫ
    w $JSDVT͸(JU)VCͰ։ൃ͞Ε͍ͯΔ
    w %FCJBOͷJOJUEεΫϦϓτ͸$JSDVTࣗମͷϩάΛग़ྗ͠ͳ͔ͬͨ
    w ग़ྗͰ͖ΔΑ͏ʹมߋͯ͠ϓϧϦΫ΋ͯ͠ΈΔ
    w NFSHF͞Εͨ
    w ϐΫγϒͰ͸ࣾ಺Ͱ࢖༻͍ͯ͠ΔΦʔϓϯιʔεϓϩμΫτʹύονΛૹΔ
    ͷ͸ਪ঑͞Ε͍ͯΔ
    w ༗໊ͳϓϩμΫτͰ΋ࡉ͔͍෦෼͸ద౰ͳ͜ͱ͕ଟ͍
    w .P[JMMBͷϓϩηε؅ཧπʔϧDJSDVTʹϓϧϦΫͨ͠࿩DBUBUTVZͱ͸
    IUUQDBUBUTVZIBUFCMPKQFOUSZ

    View Slide

  29. socket
    TPDLFU࡞੒
    ϑΝΠϧ
    σΟεΫϦϓλ
    FYFD
    socket
    ϑΝΠϧ
    σΟεΫϦϓλ
    ϓϩηε؂ࢹ
    DJSDVT͸ϓϩηε؂ࢹ͚ͩ
    ͰϦΫΤετ͸ײ஌͠ͳ͍
    BQQ͸ϑΝΠϧσΟεΫϦϓλΛ
    -JTUFO͢ΔαʔόʔͰ͋Δඞཁ͕͋Δ
    αʔόʔىಈ࣌
    αʔόʔىಈޙ
    circus
    app
    circus
    app

    View Slide

  30. circus
    socket
    ϑΝΠϧ
    σΟεΫϦϓλ
    app_old
    FYFD
    app_new
    ϓϩηε؂ࢹ
    αʔόʔϦϩʔυ
    αʔόʔϦϩʔυ
    BQQ@OFX͕ىಈ͢Δ·Ͱ଴ͭ
    BQQ@OFX͕ىಈͨ͠Β
    BQQ@PMEΛLJMM͢Δ
    circus
    socket
    ϑΝΠϧ
    σΟεΫϦϓλ
    app_old
    app_new
    ϓϩηε؂ࢹ
    LJMM

    View Slide

  31. ΩϟογϡԽ
    w ΞΫηεͷ౓ʹNFNDBDIFEʹΞΫηεΛͨ͠Β஗্͍ʹ$16࢖༻཰΋্͕ͬͯ͠·ͬͨ
    w NFNDBDIFEͷऔಘ݁ՌΛΞϓϦέʔγϣϯଆͰඵؒΩϟογϡ͢Δ͜ͱʹ
    w ௕͗͢Δͱ޿ࠂσʔλͷ൓ө͕஗ΕΔ
    w ΩϟογϡԽ͸ۜͷ஄ؙͰ͸ͳ͍
    w JGจ͸δϟϯϓ໋ྩͳͷͰҋӢʹ࢖͏ͱ஗͘ͳΔ
    w ܭࢉ݁ՌͷΩϟογϡͳͲ΋෼ذ༧ଌ͕౰ͨΓʹ͍͘ܗͩͬͨΓ͢Δͱ౎౓ܭࢉͤͨ͞
    ํ͕଎͍ࣄ͕ଟ͍
    w ΞϓϦέʔγϣϯͷෳࡶ౓Λ্͛Δ
    w ΩϟογϡԽ͸ଌఆͯ͠ޮՌ͕͋Δ෺Ҏ֎͸࢖༻͠ͳ͍
    w ਪଌ͢ΔͳܭଌͤΑ

    View Slide

  32. +40/ͱ.FTTBHF1BDL
    w NFNDBDIFEͷόϦϡʔʹ+40/ΛೖΕͯ(PଆͰQBSTF͍͕ͯͨ͠ϓϩϑΝΠ
    Ϧϯά͔ΒQBSTFʹ͕͔͔͍࣌ؒͬͯΔ͜ͱ͕൑໌
    w +40/ͱಉ͡Α͏ʹѻ͍΍͘͢ߴ଎ʹQBSTFͰ͖Δ.FTTBHF1BDLΛ࢖༻͢Δ
    ͱߴ଎ʹಈ࡞ͨ͠
    w qVFOUEͷ಺෦Ͱ΋.FTTBHF1BDL͸࢖ΘΕ͍ͯΔ
    w (P͸+40/पΓͷػೳ͕ॆ࣮͍ͯ͠Δ͚ͩ஗͍
    w ஗͔ͬͨΒϓϩϑΝΠϦϯάΛऔΓϘτϧωοΫΛݟ͚ͭͯରࡦΛߟ͑Δ΂͖
    w (Pʹͨ͠Βඞͣ଎͘ͳΔͱ͍͏͜ͱ͸ͳ͍
    w ਪଌ͢ΔͳܭଌͤΑ

    View Slide

  33. σϓϩΠ
    w ࣾ಺σϓϩΠπʔϧʹ৐͔ͬΔ
    w ϒϥ΢β͔Βద౰ʹΫϦοΫ͢ΔͱσϓϩΠαʔόʔ্ͰγΣϧεΫϦϓτ
    Λ࣮ߦͰ͖Δ
    w ࣾ಺ͷαʔϏε͸$BQJTUSBOP͔͜ͷσϓϩΠπʔϧ͕࢖ΘΕΔ͜ͱ͕ଟ͍
    w qVFOUE͸)61γάφϧΛૹΔͱϦϩʔυͰ͖Δ
    w JOJUEεΫϦϓτΛࣗલͰ࡞੒
    w (P͸ϥΠϒϥϦʹґଘ͠ͳ͍࣮ߦόΠφϦΛίϯύΠϧͰੜ੒
    w σϓϩΠαʔόʔͰίϯύΠϧ֤ͯ͠αʔόʔ΁όΠφϦΛ഑෍

    View Slide

  34. git clone
    go build
    rsync
    circusctl reload && fluentd reload
    deploy server
    application server

    View Slide

  35. ϓϩηε؂ࢹ
    w ΞϓϦέʔγϣϯ͸$JSDVT
    w NFNDBDIFE qVFOUE͸NPOJUΛར༻
    w NPOJU͸QJEϑΝΠϧΛ࡞ΔJOJUEεΫϦϓτ͕͋
    ΔͳΒ؆୯ʹϓϩηε؂ࢹ͕Ͱ͖Δ
    w NFNDBDIFE͸JOJUEεΫϦϓτ͕طʹ͋ͬͨ
    w qVFOUE͸SFMPBE࣌ʹ)61γάφϧΛૹΔͨΊ
    ʹJOJUEεΫϦϓτΛࣗ࡞͍ͯͨ͠

    View Slide

  36. ࢮ׆؂ࢹ
    w ϐΫγϒ͸/BHJPTΛ࢖͍ͬͯΔͷͰ/BHJPTͰ؂ࢹ
    w ΞϓϦέʔγϣϯ͸εςʔλείʔυ൪Λฦ͚ͩ͢ͷϧʔςΟϯάΛ༻
    ҙͯ͠؂ࢹ
    w qVFOUE͸NPOJUPS@BHFOUΛ࢖ͬͯ؂ࢹ
    w /HJOY͸TUVC@TUBUVTΛ࢖ͬͯ؂ࢹ
    w $JSDVT͸DJSDVTDUMTUBUVTͷ݁Ռ͔Β؂ࢹ
    w NFNDBDIFE͸UDQ͕ૄ௨͍ͯ͠Δ͔Ͳ͏͔Λ؂ࢹ
    w NFNDBDIFE͸ύονΛ౰ͯΔͱ5$1ιέοτͱ6/*9υϝΠϯιέοτ
    Λಉ࣌ʹMJTUFOͰ͖Δ

    View Slide

  37. Նʹඞݟʂ
    ىͬͨ͜τϥϒϧɾ՝୊ͱ
    ղܾࡦ

    View Slide

  38. ഑৴தͷ޿ࠂσʔλ͕৽͍͠
    ޿ࠂΛೖߘ్ͨ͠୺ʹফ͑ͨ

    View Slide

  39. ഑৴தͷ޿ࠂσʔλ͕৽͍͠
    ޿ࠂΛೖߘ్ͨ͠୺ʹফ͑ͨ
    w UFMOFUMPDBMIPTUͰϙʔτͰىಈ͍ͯ͠ΔNFNDBDIFEͱձ࿩Ͱ͖Δ
    w TUBUTͰىಈதͷNFNDBDIFEͷঢ়ଶΛ֬ೝͰ͖Δ
    w FWJDUJPOT͕େྔൃੜ
    w ༰ྔෆ଍ͰNFNDBDIFE͕௥͍ग़ͨ͠ճ਺
    w MJNJU@NBYCZUFT͕૝ఆΑΓ͔ͳΓখ͍͞
    w ࠷େ༰ྔ͕খ͍͞ͷͰ௥͍ग़͞Ε͍ͯͨ
    w ઃఆ஋ͷ༩͑ํΛؒҧ͍͑ͯͨ
    w ઃఆΛมߋͨ͠Β൓ө͞Ε͍ͯΔ͔֬ೝ͢Δ͜ͱ
    w ΦϯϝϞϦܕͷϛυϧ΢ΣΞ͸ϝϞϦ࢖༻཰Λ؂ࢹ͢΂͖

    View Slide

  40. /HJOYͰ഑৴͍ͯ͠Δ޿ࠂͷ
    ը૾ΛϢʔβʔͷϒϥ΢β͕
    Ωϟογϡͯ͘͠Εͳ͍

    View Slide

  41. /(*/9
    ը૾
    $"$)&
    ը૾͍ͩ͘͞ʂ
    ը૾͋͛Δ͚Ͳ
    Ωϟογϡͯ͠Ͷ
    application
    ը૾͕ͳ͍ͷͰ
    ը૾͍ͩ͘͞
    ը૾ૹΓ·͢
    /(*/9
    ը૾
    $"$)&
    ͜ͷը૾ͷΩϟογϡΛ
    ࣋ͬͯΔ͚Ͳߋ৽͋Δʁ
    ߋ৽ͳ͍͔Β
    ͦͷ··࢖ͬͯʂ
    application
    Ұ౓ը૾ΛૹͬͨΒ
    ͠͹Β͘Ωϟογϡ͞ΕΔ
    ͷͰϦΫΤετ͞Εͳ͍
    ճ໨
    ճ໨
    ͱͳΔ͸͕ͣ໰౴ແ༻Ͱ
    ը૾ΛૹΓ͚͍ͭͯͨʜ
    ࠷ॳͷճ͚ͩͰͦͷޙ͸
    ը૾Ωϟογϡ͕ฦ͢ͷͰ
    ϦΫΤετ͞Εͳ͍

    View Slide

  42. /HJOYͰ഑৴͍ͯ͠Δ޿ࠂͷը૾ΛϢʔβʔ
    ͷϒϥ΢β͕Ωϟογϡͯ͘͠Εͳ͍
    w ϒϥ΢βʹΩϟογϡͯ͠ཉ͍͠ͳΒ)551ͷϨεϙϯεϔομʔʹ-BTU
    .PEJpFE&YQJSFT$BDIF$POUSPMΛ෇͚Δ
    w ϒϥ΢β͸ಉ͡63-΁ͷϦΫΤετͷϔομʔʹ*G.PEJpFE4JODFΛ෇͚ͯ
    ϒϥ΢β͕औಘͨ͠೔࣌Λ஌Βͤͯ͘ΕΔ
    w *G.PEJpFE4JODFΑΓޙʹߋ৽͞Ε͍ͯΕ͹৽͍͠σʔλΛɼߋ৽͕ͳ͚Ε
    ͹εςʔλείʔυ /PU.PEJpFE
    Λฦͯ͠ΩϟογϡΛͦͷ··࢖ͬ
    ͯ΋Β͏
    w ࠓճͷ޿ࠂαʔόʔͰ͸ը૾͕มΘΕ͹63-͕มΘΔͨΊը૾σʔλʹߋ৽
    ͕ೖΔ͜ͱ͸ͳ͍
    w ͦ΋ͦ΋ը૾͸/HJOYଆͰΩϟογϡ͞Εͯ͠·͏ͷͰΞϓϦέʔγϣϯͷ
    Ϩεϙϯε಺༰͕มΘ͍ͬͯͯ΋/HJOY͸ؾ෇͔ͳ͍

    View Slide

  43. /HJOY͕ϑΝΠϧͷߋ৽༗ແΛͲ͏൑அ͢Δͷ͔
    w *G.PEJpFE4JODFΛݟ͔͔ͯΛ൑அ͢ΔͷͰ/HJOY͕ը૾σʔλͷλΠϜελϯϓ
    Λ೺Ѳ͍ͯ͠ͳ͍ͱμϝͰ͸ʁ
    w (Pͷαʔόʔ͕ฦ͢ͳΒλΠϜελϯϓͰ͸ͳ͘-BTU.PEJpFEϔομʔͰ൑அ͍ͯ͠Δʁ
    w NFNDBDIFEʹ޿ࠂσʔλ͕͍ͭೖߘ͞Εͨͷ͔ͷ৘ใΛೖΕͯͳ͔ͬͨͷͰʹ
    w ͋·Γྑ͘ͳ͍͕ը૾σʔλ͕มΘΕ͹63-͕มΘΔͷͰ࣮༻্໰୊͸ͳ͍
    w ͜ͷͨΊʹNFNDBDIFEʹ֨ೲ͢ΔσʔλΛ૿΍͢ͷ͸खؒΛߟ͑Δͱׂʹ߹Θͳ͍
    w FQPDI5JNFͷͩͱόάͩͱࢥΘΕΔՄೳੑ͕͋ΔͷͰආ͚ͨ
    w /HJOYͷΩϟογϡ͕ݹ͍··ͰҰ෦ͷը૾ͰΩϟογϡ͞Εͣ
    w ΩϟογϡΛ࡟আͨ͠Βશը૾Ͱ૝ఆ௨Γͷಈ͖ʹ
    w যΒͣʹҰͭҰͭ֬ೝͯ͠ঢ়گΛ೺Ѳ͠ͳ͕Β࢓༷Λௐ΂Δ͜ͱ

    View Slide

  44. (PͷΤϥʔϩάʹϢʔβʔͷ
    *1ΞυϨεΛද͍ࣔͨ͠

    View Slide

  45. (PͷΤϥʔϩάʹϢʔβʔͷ
    *1ΞυϨεΛද͍ࣔͨ͠
    w ߈ܸ͞Ε͍ͯΔՄೳੑ͕͋ΔͷͰΤϥʔΛى͍ͯ͜͠ΔϢʔβʔͷ*1ΞυϨεΛ஌Γ͍ͨ
    w ϑϩϯτ͕/HJOYͰQSPYZͯ͠(Pଆʹ౉͢
    w ϢʔβʔͷϦΫΤετ͕ͦͷ··౉ΔΘ͚Ͱ͸ͳ͍
    w ૹ৴ݩ*1ΞυϨε͸ϢʔβʔͰ͸ͳ͘/HJOY͕ಈ͍͍ͯΔαʔόʔ
    w QSPYZ@TFU@IFBEFSͰϢʔβʔͷ*1ΞυϨεΛผͷϔομʔʹ෇͚Δ
    w 93FBM*1΍9'PSXBSEFE'PSʹ෇͚Δ
    w (PଆͰϔομʔΛ͏·͘ಡΊͳ͍
    w (Pͷίʔυʹ໰୊͕͋Δͷ͔/HJOYͷઃఆʹ໰୊͕͋Δͷ͔੾Γ෼͚͕Ͱ͖ͳ͍
    w UDQͳΒUDQEVNQΛ͢Ε͹ϦΫΤετͷύέοτ͕௚઀ݟ͑ΔͷͰ੾Γ෼͚͕Ͱ͖Δ͕
    /HJOYͱ(Pͷ௨৴ʹ࢖͍ͬͯΔ6/*9υϝΠϯιέοτ͸؆୯ʹݟΕͳ͍

    View Slide

  46. TUSBDFͰγεςϜίʔϧΛݟΔ
    w 6/*9υϝΠϯιέοτͰ΍ΓऔΓ͢ΔͳΒγεςϜίʔϧͷXSJUF͸૸Δ
    w γεςϜίʔϧ͕૸ΔͳΒTUSBDFΛ࢖͑͹ݟΕΔ
    w TUSBDFͰ΋ྲྀΕͳ͍ʜ
    w ϢʔβʔͷϦΫΤετΛड͚͍ͯΔͷ͸(PSPVUJOFͰεϨουͰಈ͍͍ͯΔ
    w TUSBDFͷGΦϓγϣϯΛ࢖͏ͱεϨου΋τϨʔεͯ͘͠ΕΔ
    w TΦϓγϣϯͰ௕͍ϦΫΤετͰ΋શ෦ݟΕΔΑ͏ʹͳΔ
    w ໰୊͕ىͬͨ͜Β·ͣݪҼΛ੾Γ෼͚Δ
    w OHJOY6/*9υϝΠϯιέοτ௨৴ͷ಺༰Λݟ͍ͨ2JJUBIUUQRJJUBDPN
    DBUBUTVZJUFNTFFCECF

    View Slide

  47. ͏ΘͬʜࢲͷϖʔδΩϟογϡ
    ૿͑͗͢ʜʁ

    View Slide

  48. ͏ΘͬʜࢲͷϖʔδΩϟογϡ
    ૿͑͗͢ʜʁ
    w ࠓճͷ޿ࠂαʔόʔ͸େྔͷϩάΛग़ྗ͢Δ
    w ࢖༻͍ͯ͠ͳ͍ϩά΋ϖʔδΩϟογϡʹࡌ͍ͬͯΔͷͰ࢖༻͠ͳ͍ϩ
    άϑΝΠϧ͸DSPOͰఆظతʹϖʔδΩϟογϡ͔Β࡟আ͢Δඞཁ͋Γ
    w DQBOϞδϡʔϧͷ4ZT1BHF$BDIFͰ࡟আͰ͖Δ
    w ͜ΕͰϖʔδΩϟογϡΛ཈͍͑ͯͨ͸͕ͣNVOJOͷάϥϑΛݟΔͱ
    ͋Δ͔࣌Βಥવ૿͍͑ͯΔ
    w ϖʔδΩϟογϡ͕૿͑͗͢ΔͱTXBQͯ҆͠ఆՔಇʹ໰୊͕ग़ΔՄೳ
    ੑ͕ߴ͘ରԠ͕ඞཁ
    w ͲͷϩάϑΝΠϧ͕ϖʔδΩϟογϡΛ͍ᷰͬͯΔͷ͔෼͔Βͳ͍

    View Slide

  49. View Slide

  50. find / -type f -name "*" -size +1000k -mmin -60 2> /dev/null \
    | xargs sudo pagecache-check.pl 2> /dev/null \
    | perl -ne 'if ((m{(.*?)\s.*cached/total_pages=(.*)/.*}) && ($2
    > 0)) { print $2, "\t", $1, "\n"; }' \
    | sort -nr
    w 6/*9Β͘͠ίϚϯυΛ૊Έ߹ΘͤͯQFSMͰ੔ܗ͢Δ
    w ϩάϩʔςʔτͷࣦഊɾϩάΛ΄ͱΜͲग़ྗ͍ͯ͠ͳ͔ͬͨΞϓϦ
    έʔγϣϯ͕ಥવϩάΛ͍͢͝੎͍Ͱग़ྗ͢Δ͜ͱ͕ݪҼͩͬͨ
    w άϥϑͳͲͰҧ࿨ײΛײͨ͡ΒઈରʹԿ͔͋ΔͷͰೲಘͷ͍͘·Ͱ
    ௐ΂Δ͜ͱ
    ϖʔδΩϟογϡΛᷰ͏ϩάΛݟ͚ͭΔ

    View Slide

  51. ϩάղੳ༻ͷqVFOUE
    ͱͷ֨ಆ

    View Slide

  52. ϩάղੳ༻ͷqVFOUEͱͷ֨ಆ
    w ࠓճ͸ΞϓϦέʔγϣϯʹ΋qVFOUEΛ࢖͍ͬͯΔ͕ϐΫγϒࣾ಺తʹ͸ϩάղੳ༻్ʹ࢖
    ΘΕΔ
    w ΞϓϦέʔγϣϯͷΤϥʔϩάΛૹΔ࢓૊Έ
    w Ϣʔβʔղੳ༻ʹΞΫηεϩάΛऩू͢Δ࢓૊Έ
    w ޿ࠂ഑৴αʔόʔʹҟৗ͕ͳ͍͔/HJOYͷϩά͔Β؂ࢹ͍ͨ͠
    w εςʔλείʔυ൪୆͕ಥવ૿͑ͨͳͲ
    w ϨεϙϯελΠϜʹҟৗ͕ͳ͍͔؂ࢹ͍ͨ͠
    w ͜͜਺೔Ͱҟৗʹ଎౓͕མ͍ͪͯΔͳͲ
    w ֤഑৴αʔόʔͷ/HJOYͷϩάΛղੳͯ͠άϥϑԽ
    w άϥϑԽʹ͸σʔλΛ1045͚ͨͩ͠Ͱάϥϑʹͯ͘͠ΕΔ(SPXUI'PSFDBTUͰ

    View Slide

  53. qVFOUEͰϩάΛղੳ͢Δ
    w JO@UBJMϓϥάΠϯΛ࢖༻͢ΔͱϩάϑΝΠϧΛUBJMͰ͖Δ
    w ਖ਼نදݱͳͲͰϩάϑΝΠϧΛղੳͤͯ݁͞ՌΛ(SPXUI'PSFDBTUʹ1045
    w શϩάΛਖ਼نදݱͰղੳ͍ͯ͠ΔͷͰ$16ύϫʔΛ࢖͏
    w ޿ࠂ഑৴αʔόʔ͸ϢʔβʔͷϦΫΤετΛड͚ΔͨΊ$16ύϫʔΛ࢖͍ͨ͘ͳ͍
    w ϢʔβʔͷϦΫΤετΛड͚͍ͯͳ͍ผαʔόʔʹϩάΛૹͬͯͦ͜Ͱղੳ͍ͨ͠
    w ͦͷࡍʹͲ͜ͷαʔόʔͷϩά͔͸෼͔ΔΑ͏ʹ͍ͨ͠
    w ϗετ໊΋ؚΊͯૹͬͯ͏·͘ϩάͰղੳ͢Δඞཁ͕͋Δ
    w ଓ͖͸8FCͰ
    w qVFOUEͰϗετ໊෇͖ͰϩάΛड͚औͬͯղੳͯ͠άϥϑʹ͍ͨ͠2JJUBIUUQ
    RJJUBDPNDBUBUTVZJUFNTBBBDE

    View Slide

  54. ࢀߟ63-
    w ;FOE0QDBDIFͱ"1$VͰ͸͡ΊΔϋΠύϑΥʔϚϯε1)1QJYJWFOHJOFFSJOHCMPH
    w IUUQJOTJEFQJYJWOFUFOUSZ
    w <'MVFOUE"EWFOU$BMFOEBS>޿ࠂ഑৴ʹ'MVFOUEΛ࢖͍ͬͯ·͢ͱ͍͏࿩!LBU[DIBOHHJTU
    w IUUQTHJTUHJUIVCDPNLBU[DIBOH
    w (PͰॻ͍ͨαʔόʔΛ؅ཧ͢Δʹ͸DJSDVT͕ศརNFUIBOFͷϒϩά
    w IUUQNFUIBOFIBUFOBCMPHKQFOUSZ(P@Ͱॻ͍ͨαʔόʔΛ؅ཧ͢Δʹ͸@DJSDVT@͕ศར
    w 4FSWFS4UBSUFS͔ΒֶͿIPUEFQMPZͷ࢓૊ΈTIJCBZVCMPH
    w IUUQTIJCBZVIBUFOBCMPHDPNFOUSZ
    w 'SFRVFOUMZ"TLFE2VFTUJPOTŠ$JSDVTEPDVNFOUBUJPO
    w IUUQDJSDVTSFBEUIFEPDTPSHFOMBUFTUGBR
    w QJYJWͷ։ൃɾσϓϩΠ؀ڥͷมભʢ೥य़൛ʣQJYJWFOHJOFFSJOHCMPH
    w IUUQJOTJEFQJYJWOFUFOUSZ
    w NFNDBDIFE͔Β,ZPUP5ZDPPO΁
    w IUUQXXXTMJEFTIBSFOFUDVCJDEBJZBNFNDBDIFELZPUPUZDPPOLFZ

    View Slide

  55. ·ͱΊ
    w ݱߦ޿ࠂαʔόʔ͸ػೳ໘ɾػೳ֦ு໘ɾόʔδϣϯΞοϓɾ৽॓%$ͷεϖʔεͷ໰୊ͳͲଟ͘
    ͷ໰୊Λ๊͍͑ͯͨ
    w ϐΫγϒ৽޿ࠂαʔόʔͷΠϯϑϥߏ੒ʹ৽ଔΠϯϑϥΤϯδχΞ͕௅Μͩ
    w ϕϯνϚʔΫ΍ϓϩϑΝΠϦϯάΛऔΓͳ͕Β։ൃ͍ͯͨ͠Β3VCZʹΑΔ഑৴αʔόʔ͸ࠔ೉
    ͕ଟ͔ͬͨ
    w ࣾ಺ॳͷ(PͰαʔόʔΛཱͯΔ͜ͱʹ
    w $JSDVTΛ࢖ͬͯ(PͷΞϓϦέʔγϣϯΛIPUEFQMPZ
    w ඵ΋མͱͤͳ͍޿ࠂαʔόʔʹඞਢͷ࢓૊Έ
    w (PͳΒϏϧυͨ͠΋ͷΛ഑෍͢Δ͚ͩͰσϓϩΠͰ͖Δ
    w /BHJPTͰࢮ׆؂ࢹ
    w ։ൃΛ͢Δ্Ͱ໰୊͸ͨ͘͞Μ͋ΔͷͰҰͭҰͭղফ͢Δඞཁ͕͋Δ

    View Slide

  56. ݸਓత͓͢͢Ίຊʢશһʣ
    w ମܥతʹֶͿ҆શͳ8FCΞϓϦέʔγϣϯͷ࡞Γํʢಙؙຊʣ
    w ಡ·ͣʹ8FCΞϓϦ։ൃෆՄೳ
    w Ϧʔμϒϧίʔυ
    w ձࣾͷίʔυΛ৮ΔͳΒಡΉ΂͖
    w ϋΠύϑΥʔϚϯε8FCαΠτ
    w ߴ଎ʹ8FCαΠτΛදࣔ͢Δํ๏͕جຊ͔Βॻ͍ͯ͋Δ
    w 42-Ξϯνύλʔϯ
    w 42-Ͱ΍ͬͯ͸͍͚ͳ͍΂͔Βͣू
    w QJYJW͸ΞϯνύλʔϯͩΒ͚
    w 5FBN(FFL
    w ٕज़ॻͰ͸ͳ͍͕άϧʔϓ։ൃʹ͓͚Δ৺ߏ͑ͳͲ

    View Slide

  57. ݸਓత͓͢͢Ίຊʢݸผʣ
    w αʔόΠϯϑϥΛࢧ͑Δٕज़
    w গ͠ݹ͍͕ࠓճͷ࿩ʹڵຯ͕͋Ε͹
    w ͳΔ΄Ͳ6OJYϓϩηε3VCZͰֶͿ6OJYͷجૅ
    w QSFGPSLͳͲϓϩηεʹ͍ͭͯ
    w ΠϯϑϥωοτϫʔΫΤϯδχΞͷͨΊͷωοτϫʔΫٕज़ˍઃܭೖ໳
    w Πϯϑϥͷ࢓ࣄ಺༰͕஌Γ͍ͨਓʹ
    w αʔόΠϯϑϥΤϯδχΞཆ੒ಡຊϩάऩूdՄࢹԽฤ
    w qVFOUEͳͲʹڵຯ͕͋Ε͹

    View Slide