Slide 1

Slide 1 text

ݚڀ։ൃʹΑͬͯαʔό୆਺Λ100෼ͷ1ʹ͢Δٕज़ΛੜΈग़͢ ϖύϘݚڀॴ ओ੮ݚڀһ ݉ γχΞϓϦϯγύϧΤϯδχΞ দຊ ྄հ / Pepabo R&D Institute, GMO Pepabo, Inc. 2017.11.25 Fukuoka RubyKaigi 02 200ສυϝΠϯͷHTTPSԽΛݟਾ͑ͨ mrubyʹΑΔେن໛ূ໌ॻ؅ཧΞʔΩςΫνϟ

Slide 2

Slide 2 text

• ژ౎େֶത࢜ʢ৘ใֶʣ • ϖύϘݚڀॴ ओ੮ݚڀһ • GMOϖύϘ γχΞɾϓϦϯγύϧΤϯδχΞ • ݩΠϯϑϥΤϯδχΞ • ೔ຊOSS঑ྭ৆ɾ৘ใॲཧֶձ ࢁԼه೦ݚڀ৆ͳͲଟ਺ 2 দຊ྄հ / ·ͭ΋ͱΓʔ / @matsumotory

Slide 3

Slide 3 text

1.ৗ࣌HTTPSԽͷഎܠͱຊݚڀͷ໨త 2.ैདྷͷWebαʔόͷূ໌ॻઃఆͷ՝୊ 3.ߴूੵϚϧνςφϯτWebαʔόͷେن໛ূ໌ॻ؅ཧ 4.࣮ݧͱ࣮ӡ༻্ͷධՁ 5.·ͱΊ 3 ໨࣍

Slide 4

Slide 4 text

1. ৗ࣌HTTPSԽͷഎܠͱຊݚڀͷ໨త

Slide 5

Slide 5 text

• HTTP/2ͷRFC࠾୒ͱ࣮༻ԽͷऔΓ૊Έ • GoogleʹΑΔৗ࣌HTTPSԽͷਪਐ • Let’s EncryptʹΑΔແྉͷDVূ໌ॻͷఏڙ • اۀ͚ͩͰͳ͘ݸਓͷWebαΠτͷHTTPSԽ΋ඞਢ 5 ݚڀͷഎܠ

Slide 6

Slide 6 text

• ݸਓ޲͚ͷ௿Ձ֨ϗεςΟϯάͰ࠾༻͞ΕΔ͜ͱͷଟ͍ํࣜ※1 • ୯ҰͷWebαʔόʹߴूੵ(਺ສυϝΠϯ)ʹϗετΛऩ༰ • Ծ૝ϗετํࣜʹΑΓେྔͷϗετΛಉҰϓϩηεͰॲཧ • ϦόʔεϓϩΩγͷ৔߹͸ߋʹߴूੵ(਺ेɺ਺ඦສυϝΠϯ) • ߴूੵϚϧνςφϯτํࣜͷHTTPSରԠ΋ٸ຿ 6 ߴूੵϚϧνςφϯτํࣜͷWebαʔό ˞দຊ྄հ തֶ࢜Ґ࿦จ8FCαʔόͷߴूੵϚϧνςφϯτΞʔΩςΫνϟʹؔ͢Δݚڀ IUUQTSFQPTJUPSZLVMJCLZPUPVBDKQETQBDFIBOEMF ژ౎େֶ ೥݄

Slide 7

Slide 7 text

• Webαʔόϓϩηεىಈ࣌ʹશͯͷূ໌ॻΛಡΈࠐΉํࣜ • ߴूੵϚϧνςφϯτํࣜͰ͸ূ໌ॻ਺͕๲େ • ϝϞϦ࢖༻ྔ͕ূ໌ॻ਺ʹґଘͯ͠ϋʔυ΢ΣΞίετ૿Ճ • ϓϩηεىಈʹ௕͕͔͔࣌ؒΓઃఆมߋ࣌ͷӡ༻໘ʹ՝୊ • ࠓޙΛݟਾ͑ͯݚڀऀͱͯ͠ૣΊʹखΛ͏ͭඞཁ͕͋Δ 7 ैདྷͷߴूੵϚϧνςφϯτํࣜͷূ໌ॻઃఆͷ՝୊

Slide 8

Slide 8 text

2015೥Լظ͔ΒऔΓ૊Έ։࢝ޙ2016೥1݄ϦϦʔε 8 SFGIUUQICNBUTVNPUPSKQFOUSZ

Slide 9

Slide 9 text

࣮૷·Ͱ͸2೥લʹ΄΅Ͱ͖͍͕ͯͨ ࣮ӡ༻্Ͱͷ༗ޮੑͷධՁ͕େࣄ

Slide 10

Slide 10 text

جຊతʹHTTPSԽ͸༗ྉͩͬͨͷͰ ୔ࢁͷٞ࿦Λܦͯࠓ೥ͷ্ظʹແྉԽ

Slide 11

Slide 11 text

ߴूੵϚϧνςφϯτWebαʔόͷେن໛ূ໌ॻ؅ཧ • ূ໌ॻ਺ͷ૿Ճʹ൐͏Ϧιʔε࢖༻ྔͷ૿ՃΛ௿ݮ • αʔϏεఀࢭ͢Δ͜ͱͳ͘৽نઃఆΛ൓өՄೳ • ϗεςΟϯάαʔϏεͷϓϩμΫγϣϯ؀ڥʹಋೖͯ͠ධՁ 200ສυϝΠϯͷHTTPSԽʹඞཁͳαʔό୆਺Λ100෼ͷ1΁ 11 ຊݚڀͷ໨త

Slide 12

Slide 12 text

2. ैདྷͷWebαʔόͷূ໌ॻઃఆͷ՝୊

Slide 13

Slide 13 text

ߴूੵϚϧνςφϯτํࣜΛલఏͱͨ͠ HTTPSԽͷ՝୊

Slide 14

Slide 14 text

େྔͷυϝΠϯΛHTTPSԽ͢Δࡍͷ ՝୊Λ໌֬ʹ͢Δ

Slide 15

Slide 15 text

1. HTTPSԽʹ൐͏ϋʔυ΢ΣΞίετͷ૿Ճ 2. ূ໌ॻ௥Ճ౳ͷઃఆมߋద༻࣌ؒͷ૿Ճ 15 ߴूੵϚϧνςφϯτํࣜͷऩ༰཰ͱӡ༻໘ͷ՝୊

Slide 16

Slide 16 text

• ϗετͷ਺ʹൺྫͯ͠ϗετઃఆɾূ໌ॻ΍ൿີ伴ͷσʔλɾ HTTP/HTTPSॲཧʹඞཁͳϝϞϦ࢖༻ྔ͕૿େ • ΄ͱΜͲΞΫηεͷແ͍ϗετʹରͯ͠΋ઃఆ৘ใΛอ࣋ • Մ༻ੑͱอकੑΛߴΊΔͨΊʹHTTPS༻ͷϓϩΩγΛલஈʹ ஔ͍ͨ৔߹͸όοΫΤϯυͷυϝΠϯΛશͯू໿͢Δඞཁ͋Γ • ฐࣾϗεςΟϯάαʔϏεͰ͸200ສυϝΠϯҎ্ 16 1. HTTPSԽʹ൐͏ϋʔυ΢ΣΞίετͷ૿Ճ

Slide 17

Slide 17 text

• αʔόϓϩηεىಈ࣌ʹશͯͷূ໌ॻ΍ઃఆΛಡΈࠐΈ • ϗετ୯ҐͰରԠ͢Δূ໌ॻͷϑΝΠϧ΍ઃఆΛهड़ • ߴूੵԽʹ൐͍ઃఆߦ਺ͷ૿େ΍؅ཧίετͷ૿େ • ઃఆ਺૿Ճʹ൐͍αʔόϓϩηεͷ࠶ىಈ͕࣌ؒ૿Ճ • ઃఆͷ࠶ಡΈࠐΈॲཧ͢ΒαʔϏεఀࢭʹܨ͕ΔڪΕ༗Γ 17 2. ূ໌ॻ௥Ճ౳ͷઃఆมߋద༻࣌ؒͷ૿Ճ

Slide 18

Slide 18 text

3. ߴूੵϚϧνςφϯτWebαʔό ͷେن໛ূ໌ॻ؅ཧΞʔΩςΫνϟ

Slide 19

Slide 19 text

·ͱΊͨ՝୊Λղܾ͢ΔํࣜΛ ·ͣ͸ఏҊ͢Δ

Slide 20

Slide 20 text

• αʔόϓϩηεىಈ࣌ʹূ໌ॻ͸Ұ੾ಡΈࠐ·ͳ͍ • αʔόϓϩηεͷ࠶ىಈ/࠶ಡΈࠐΈ࣌ؒͷ௿଎ԽΛճආ • TLSϋϯυγΣΠΫ࣌ʹඞཁͳূ໌ॻͱઃఆΛಈతʹಡΈࠐΈ • ߴ଎ͳϓϩηε࠶ಡΈࠐΈʹΑΔϝϞϦղ์΋Մೳ • ূ໌ॻ΍ϗετͷ৽ن௥Ճઃఆʹϓϩηε࠶ىಈ͕ෆཁ 20 ఏҊख๏

Slide 21

Slide 21 text

ΞʔΩςΫνϟʢํࣜʣͷఏҊ 21 'JMF,74 IUUQE
 QSPDFTT $MJFOU 4/*ʹΑͬͯTFSWFSOBNF͕FYBNQMFKQͷ υϝΠϯʹର͢Δ5-4ϋϯυγΣΠΫ͕։࢝ 5-4ϋϯυγΣΠΫ࣌ʹυϝΠϯFYBNQMFKQʹඥͮ͘ূ ໌ॻͱൿີ伴ΛϑΝΠϧ΍,FZ7BMVF4UPSF ,74 ͳͲ ͔ΒಈతʹಡΈࠐΈ͍ͨ

Slide 22

Slide 22 text

ΞʔΩςΫνϟʢํࣜʣͷఏҊ 22 'JMF,74 IUUQE
 QSPDFTT $MJFOU 5-4ϋϯυγΣΠΫ࣌ʹ೚ҙͷؔ਺Λ࣮ߦͰ͖Ε͹ྑ͍ ؔ਺ͷதͰυϝΠϯͱඥͮ͘αʔόূ໌ॻͱൿີ伴Λ ಡΈࠐΉؔ਺Λ࣮ߦͰ͖Ε͹ྑ͍

Slide 23

Slide 23 text

ํࣜΛ࣮ݱ͢ΔͨΊͷ࣮૷Λݕ౼͢Δ

Slide 24

Slide 24 text

ΤϯδχΞͱͯ͠ͷ࿹ͷݟͤͲ͜Ζ

Slide 25

Slide 25 text

• 3೥ͿΓͷϝδϟʔϦϦʔε • https://www.openssl.org/news/openssl-1.0.2-notes.html • OpenSSLͷίʔυΛٱʑʹோΊ͍ͯͨ • TLSϋϯυγΣΠΫ࣌ʹؔ਺ΛίʔϧόοΫ͢Δؔ਺͕௥Ճ • SSL_CTX_set_client_cert_cb() ͳͲ 25 OpenSSL 1.0.2͕2015೥1݄22೔ʹϦϦʔε

Slide 26

Slide 26 text

࣌୅ͷྲྀΕͱࣗ෼ͷߟ͕͑ಉظ͞Εͨ

Slide 27

Slide 27 text

• RubyͰΠϯϑϥઃܭʹԠͨ͡ಈతઃఆΛՄೳʹ͢ΔͨΊ • όοΫΤϯυͷܾఆ΋RubyͰॻ͍ͯnginxͷઃఆΛ؆ૉԽ • ূ໌ॻσʔλͷऔΓग़͠Λࣗ༝ʹબ୒Ͱ͖ΔΑ͏ʹ͢ΔͨΊ • RedisɺMySQLɺlocalmemcacheɺAPIͳͲmrbgemͷ׆༻ • ੑೳʹ໰୊͕ແ͚Ε͹RubyͰॻ͖͍ͨ 27 ͞Βʹngx_mruby΋׆༻͍ͨ͠

Slide 28

Slide 28 text

ngx_mruby × OpenSSL 1.0.2

Slide 29

Slide 29 text

• ngx_mruby※1 ʹTLSϋϯυγΣΠΫͷRubyϑοΫઃఆΛ࣮૷ • TLSϋϯυγΣΠΫ࣌ʹϑοΫ͞ΕͨRubyͷίʔυΛ࣮ߦ • RubyϝιουͰOpenSSLͱσʔλͷड͚౉͠Λ࣮ߦ • KVS/File͔Βূ໌ॻ΍ൿີ伴ΛRubyܦ༝ͰಡΈࠐΈՄ 29 ngx_mruby v1.16.0ʢ2016೥2݄ʣͰ௥Ճ࣮૷ ˞দຊ྄հ Ԭ෦णஉ NPE@NSVCZεΫϦϓτݴޠͰߴ଎͔ͭলϝϞϦʹ֦ுՄೳͳ8FCαʔόͷ ػೳ֦ுࢧԉػߏ ৘ใॲཧֶձ࿦จࢽɼ7PM /P QQ /PW

Slide 30

Slide 30 text

ngx_mrubyͷূ໌ॻಈతಡΈࠐΈ࣮૷ϑϩʔ 30 44-@$59@TFU@DFSU@DC ʹ3VCZͷόΠ τίʔυΛ࣮ߦ͢ΔIBOEMFSͷؔ਺ϙΠϯ λͱίϯςΩετߏ଄ମϙΠϯλΛηοτ OHJOYDPOGͷઃఆ͔ΒಡΈࠐΜͩ3VCZε ΫϦϓτΛόΠτίʔυԽͯ͠ ίϯςΩετߏ଄ମʹอଘ 5-4ϋϯυγΣΠΫ࣌ʹIBOEMFS͕ίʔϧ όοΫ͞ΕόΠτίʔυΛ࣮ߦ όΠτίʔυͰ࣮ߦ͞ΕΔ3VCZͷϝιο υܦ༝Ͱূ໌ॻ΍ൿີ伴σʔλ͕ ίϯςΩετߏ଄ମʹηοτ͢Δ ূ໌ॻͱൿີ伴σʔλʹج͍ͯ#*0ܦ༝Ͱ σʔλΛಡΈࠐΜͰϋϯυγΣΠΫΛଓߦ OHJOYىಈ࣌ͷॲཧ OHJOY͕ϦΫΤετड৴ͨ࣌͠ͷॲཧ NSVCZͷ5-4ϋϯυγΣΠΫϑοΫσΟ ϨΫςΟϒ͕ଘࡏͨ͠Β 44-@$59@TFU@DFSU@DC Λݺͼग़͢

Slide 31

Slide 31 text

lua-nginx-module΋΄΅ಉ࣌ظʹ։ൃ 31 ೥݄ʹͲͪΒ΋Ϛʔδ ࣗ෼͕ཉ͍͠ͱࢥͬͨ࣌ʹͳ͔ͬͨ͜ͱͱ3VCZͰॻ͖͔ͨͬͨͷͰOHY@NSVCZʹ࣮૷

Slide 32

Slide 32 text

• ϦΫΤετͷ͋ͬͨOpenSSLͷservernameͰ൑ఆ • ඥͮ͘ূ໌ॻͱϓϩΩγઌΛRubyͷίʔυͰܾఆ • RubyͰಈతʹઃఆ(mruby_set $hostͱproxy_pass $host) • ୯ҰͷઃఆͰສͷΦʔμʔͷυϝΠϯΛಈతʹॲཧ • ઃఆͱূ໌ॻʹؔ͢ΔϝϞϦ࢖༻ྔΛઅ໿ 32 ngx_mrubyͷಈతͳઃఆͱূ໌ॻಡΈࠐΈ

Slide 33

Slide 33 text

33 ϦΫΤετ͞ΕͨυϝΠϯ͔Βಈతʹূ໌ॻΛಡΈସ͑Δ͜ͱʹΑ ΓόοΫΤϯυ΁ͷϓϩΩγઃఆ΋ؚΊ୯Ұͷઃఆʹू໿Մೳ ϑΝΠϧϕʔεͷಈతূ໌ॻಡΈࠐΈྫ 3VCZͰϓϩάϥϚϒϧʹهड़Մೳ

Slide 34

Slide 34 text

34 ϦΫΤετ͞ΕͨυϝΠϯ͔Βಈతʹূ໌ॻΛ ಡΈସ͑Δ͜ͱʹΑΓ୯Ұͷઃఆʹू໿Մೳ ,74ϕʔεͷಈతূ໌ॻಡΈࠐΈྫ

Slide 35

Slide 35 text

1. αʔόϓϩηεىಈ࣌ʹ͸ূ໌ॻ͸ಡΈࠐ·ͳ͍ 2. υϝΠϯͱূ໌ॻɺϓϩΩγͷઃఆ͸୯Ұͷઃఆʹѹॖ 3. ΞΫηεͷ͋ͬͨυϝΠϯͷΈͷূ໌ॻΛಡΈࠐΉ • 200ສυϝΠϯͰΞΫηεͷແ͍υϝΠϯ͸ଟ਺ଘࡏ 4. ఆظతͳϓϩηεϦϩʔυʹΑΓূ໌ॻσʔλΛղ์ 35 HTTPSԽʹؔ͢ΔϝϞϦ࢖༻ྔޮ཰Խ·ͱΊ

Slide 36

Slide 36 text

ํࣜͱ࣮૷͸Ͱ͖ͨͷͰޙ͸༗ޮੑΛࣔ͢

Slide 37

Slide 37 text

4. ࣮ݧͱ࣮ӡ༻্ͷධՁ

Slide 38

Slide 38 text

ఆྔతͳ࣮ݧͱߟ࡯ʹΑͬͯ ఏҊख๏ͷ༗ޮੑΛ໌֬ʹࣔ͢

Slide 39

Slide 39 text

༗ޮੑΛࣔ͢ओு͔Β৴པੑΛಘΔ

Slide 40

Slide 40 text

1. ࣮ݧ؀ڥͰैདྷख๏ͱఏҊख๏ͷىಈ࣌ؒͷ࣮ݧ 2. ࣮ݧ؀ڥͰैདྷख๏ͱఏҊख๏ͷੑೳൺֱ࣮ݧ ɾಈతূ໌ॻಡΈࠐΈͷΦʔόʔϔου͸Ͳͷఔ౓͔ʁ 3. ຊ൪؀ڥͰ࣮ӡ༻্ͷධՁ ɾແྉHTTPSΦϓγϣϯαʔϏεͷ։࢝ͱͦͷޙ 40 ࣮ݧͱ࣮ӡ༻্ͷධՁ

Slide 41

Slide 41 text

1. ैདྷख๏ͱఏҊख๏ͷىಈ࣌ؒͷ࣮ݧ

Slide 42

Slide 42 text

࣮ݧ؀ڥ 42 ࢓༷ $16 *OUFM9FPO&W()[DPSF .FNPSZ (CZUFT 4FSWFS /&$&YQSFTT3G& 04 $FOU04-JOVY,FSOFM

Slide 43

Slide 43 text

• 10ສϗετ෼ͷ4096bitsͷ伴௕ͷൿີ伴ͱαʔόূ໌ॻΛ nginxόʔδϣϯ1.11.13ͰಡΈࠐΈ • ैདྷख๏͸࠶ಡΈࠐΈॲཧͰ΋αʔϏεఀࢭʹܨ͕Δ 43 ैདྷख๏ͱఏҊख๏ͷىಈ࣌ؒͷ࣮ݧ ߲໨ ैདྷख๏ ఏҊख๏ ϓϩηεىಈͷ࣮࣌ؒ ඵ ϓϩηεىಈͷϢʔβ$16࢖༻࣌ؒ ඵ ϓϩηεىಈͷγεςϜ$16࢖༻࣌ؒ ඵ

Slide 44

Slide 44 text

2. ैདྷख๏ͱఏҊख๏ͷੑೳൺֱ࣮ݧ

Slide 45

Slide 45 text

•ैདྷͷࣄલূ໌ॻಡΈࠐΈख๏ͱఏҊख๏ͷTLSϋϯυ γΣΠΫ࣌ʹಈతʹಡΈࠐΉख๏(KVSϕʔε)ͱൺֱ •ಉ࣌઀ଓ਺ΛมԽͤ͞ͳ͕ΒੑೳΛධՁ •nginxʹॳظಉ෧͞Ε͍ͯΔ612Bytesͷindex.html •cipher suites͸ECDHE-RSA-AES128-GCM-SHA256 45 ఏҊख๏ͷੑೳධՁ

Slide 46

Slide 46 text

ఏҊํࣜͱैདྷํࣜͷੑೳൺֱ 46 ಉ࣌઀ଓ਺ ैདྷํࣜ QSFMPBE SFRTFD ఏҊํࣜ EZOBNJDMPBE SFRTFD $(*ͷΑ͏ͳϓϩηεෳ੡͕ੜ͡ͳ͍ܰྔͳ੩తϑΝΠϧ΁ͷϦΫΤετͰ΋ɺ ূ໌ॻͷಈతಡΈࠐΈ͸ैདྷख๏ͷ੩తಡΈࠐΈͱൺֱͯ͠΋΄΅͕ࠩͳ͍

Slide 47

Slide 47 text

10ສϗετऩ༰࣌ͷ੩తϑΝΠϧͷੑೳൺֱ 47 ਺ेCZUFTͷܰྔͳ)5.-ϑΝΠϧ΁ͷϦΫΤετ 3FRVFTUTFD ಉ࣌઀ଓ਺ ैདྷख๏ ఏҊख๏

Slide 48

Slide 48 text

• TLS΍Ϩεϙϯεੜ੒ॲཧͱൺֱͯ͠ಈతূ໌ॻಡΈࠐΈॲཧ ͸࣮༻্໰୊ʹͳΒͳ͍ఔ౓ͷॲཧίετ • TLSϋϯυγΣΠΫ࣌ͷ҉߸ɾ෮߸ॲཧͷίετ͕େ͖͍ 48 ߟ࡯

Slide 49

Slide 49 text

3. ຊ൪؀ڥͰ࣮ӡ༻্ͷධՁ

Slide 50

Slide 50 text

࣮ӡ༻ޙʹ͓͍ͯ΋ ఏҊख๏ͷ༗ޮੑΛ͖ͪΜͱࣔ͢

Slide 51

Slide 51 text

ͦͷͨΊʹ͸ैདྷख๏ͷ৔߹Ͳ͏ͳΔ͔Λ ͖ͪΜͱܭଌ͠ߟ࡯͢Δ

Slide 52

Slide 52 text

ͦΕ͕ݚڀ։ൃͷࠜڌʹܨ͕Δ

Slide 53

Slide 53 text

͞ΒͳΔվળʹ΋ܨ͕͍ͬͯ͘

Slide 54

Slide 54 text

• ैདྷख๏ͱఏҊख๏ͷ1ϲ݄ؒͷϦιʔε࢖༻ྔΛൺֱ • ैདྷख๏͸2017೥3݄͔Β4݄ɺఏҊख๏͸7݄͔Β8݄ • ෳ਺୆ͷಉҰϋʔυ΢ΣΞ্ʹ4݄຤ΛػʹϦϓϨʔε • ैདྷख๏͸Apache2.4ɺఏҊख๏͸nginx1.11Ͱ࣮૷ • ূ໌ॻ਺ͷ૿Ճ΍ϦΫΤετॲཧ਺ͷมԽͱൺֱ͠ͳ͕Βߟ࡯ 54 ແྉূ໌ॻαʔϏεΛػʹ࣮ӡ༻্ͷධՁ

Slide 55

Slide 55 text

ຊ൪؀ڥͷఏҊख๏ʹΑΔγεςϜߏ੒֓ཁ 55 ఏҊख๏ͷద༻Օॴ

Slide 56

Slide 56 text

ຊ൪؀ڥͷϦόʔεϓϩΩγαʔόͷ࢓༷ 56 ࢓༷ $16 *OUFM9FPO&W()[UISFBE .FNPSZ (CZUFT 4FSWFS /&$&YQSFTT&F. 04 $FOU04

Slide 57

Slide 57 text

1ϲ݄ؒͷূ໌ॻ਺ͷભҠ 57 0 5000 10000 15000 20000 25000 1 6 11 16 21 26 31 The number of cer-ficates day The number of cer-ficate in a month dynamic load preload Θ͔Γʹ͍͕͘Ұϲ݄Ͱ͔Β΁ͱ ূ໌ॻఔ౓૿͍͑ͯΔ ূ໌ॻ਺͸ϦϓϨʔεલͷഒ͔Βഒ

Slide 58

Slide 58 text

1ϲ݄ؒͷ1αʔό΁ͷඵؒHTTPϦΫΤετ਺ 58 0 200 400 600 800 1000 1200 1400 1600 1 6 11 16 21 26 31 Requests/sec day Request/sec in a mouth dynamic load preload ϦϓϨʔεޙʹ-#ͷׂΓ౰ͯൺ཰͕มΘͬͨͨΊ )551ʴ)5514ϦΫΤετॲཧ਺͸ഒ͔Βഒ

Slide 59

Slide 59 text

1ϲ݄ؒͷCPU࢖༻཰ͷભҠ 59 0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 1 6 11 16 21 26 31 CPU usage(%) day CPU usage in a mouth dynamic load preload ূ໌ॻ਺͕͔Βഒʹ΋ؔΘΒͣ$16࢖༻཰͸ඍ͕ࠩͩ௿ݮ܏޲ ສূ໌ॻ૿ՃͰ$16͸ఔ౓ඍ૿

Slide 60

Slide 60 text

1ϲ݄ؒͷϝϞϦ࢖༻཰ͷભҠ 60 0 1000 2000 3000 4000 5000 6000 7000 8000 1 6 11 16 21 26 31 Memory usage(MBytes) day Memory usage in a mouth dycamic load preload ূ໌ॻ਺͸͔Βഒʹ΋ؔΘΒͣϝϞϦ࢖༻཰͸௿ݮ ఏҊख๏͸ສҎ্૿Ճ͍ͯ͠Δূ໌ॻ਺ʹ΋΄΅ґଘ͍ͯ͠ͳ͍ ূ໌ॻ਺૿Ճʹ൐͍ϝϞϦ࢖༻ྔ͸αʔόશମͰ(#ZUFTఔ౓૿Ճ

Slide 61

Slide 61 text

• ैདྷख๏(preload)͸1ϗετ௥Ճ͋ͨΓϝϞϦ2.5MBytes૿Ճ • 2ສূ໌ॻͷ৔߹͸50GBytesҎ্ͷϝϞϦ͕ඞཁ • ϝϞϦ32GbytesͷαʔόͳͷͰैདྷख๏Ͱ͸طʹ௒ա • ఏҊख๏͸2ສূ໌ॻΛ௒͑ͯ΋໿3GbytesͰ΄΅Ұఆ • ຖ೔ͷreload͕ՄೳʹͳΓͦͷ૊Έ߹ΘͤʹΑ࣮ͬͯݱ 61 1ϲ݄ͷ࣮ӡ༻্ͷධՁ͔ΒϝϞϦͷ࢖༻ྔΛߟ࡯

Slide 62

Slide 62 text

• ैདྷख๏͸20ສূ໌ॻΛॲཧ͢Δͷʹ500Gbytesඞཁ • 32GBytesͷαʔό͕15୆Ҏ্ඞཁ • ఏҊख๏͸20ສূ໌ॻͰ΋1୆ͰॲཧՄೳͷݟࠐΈ • 1ɺ2ສূ໌ॻ૿Ճͯ͠΋ϝϞϦ࢖༻ྔ͸3GBytesͰ΄΅Ұ ఆɺCPU࢖༻཰͸0.2ʙ0.5%૿Ճఔ౓ 62 ϝϞϦ࢖༻ྔ͔Βඞཁͳϋʔυ΢ΣΞΛݟੵ΋Γ

Slide 63

Slide 63 text

ఏҊख๏ʹΑΓαʔό୆਺Λ15෼ͷ1΁ͱ େ෯ʹ௿ݮՄೳͳݟੵ΋Γ

Slide 64

Slide 64 text

15෼ͷ1ʁ

Slide 65

Slide 65 text

͞Βʹઌ΁

Slide 66

Slide 66 text

100෼ͷ1Λ໨ࢦ͢

Slide 67

Slide 67 text

ݕূ͍ͯ͘͠ͱ վળ͢ΔՕॴ͕ݟ͖͑ͯͨ

Slide 68

Slide 68 text

• ϝϞϦ࢖༻ྔΛ͞Βʹ௿ݮͤ͞ΔઓུΛͱΔ • reloadͷ૊Έ߹ΘͤͰ΋૿ՃྔΛߋʹݮΒͤͨΒޮ཰ԽՄೳ • reloadΛ΍Ίͯ·ͣ͸૿ՃྔΛ֬ೝ • ͔ͦ͜Βո͍͠ίʔυͱઃఆΛϦϑΝΫλϦϯά͍ͯ͘͠ • 4ϲ݄ؒͷϝϞϦભҠΛάϥϑԽ…..༧૝֎ʹϦʔΫ͍ͯͨ͠ 68 ϝϞϦό΢ϯυͷ՝୊Λߋʹվળ͍ͨ͠

Slide 69

Slide 69 text

69 0 5000 10000 15000 20000 25000 30000 2017/07/02-09:00 2017/07/04-09:00 2017/07/06-09:00 2017/07/08-09:00 2017/07/10-09:00 2017/07/12-09:00 2017/07/14-09:00 2017/07/16-09:00 2017/07/18-09:00 2017/07/20-09:00 2017/07/22-09:00 2017/07/24-09:00 2017/07/26-09:00 2017/07/28-09:00 2017/07/30-09:00 2017/08/01-09:00 2017/08/03-09:00 2017/08/05-09:00 2017/08/07-09:00 2017/08/09-09:00 2017/08/11-09:00 2017/08/13-09:00 2017/08/15-09:00 2017/08/17-09:00 2017/08/19-09:00 2017/08/21-09:00 2017/08/23-09:00 2017/08/25-09:00 2017/08/27-09:00 2017/08/29-09:00 2017/08/31-09:00 2017/09/02-09:00 2017/09/04-09:00 2017/09/06-09:00 2017/09/08-09:00 2017/09/10-09:00 2017/09/12-09:00 2017/09/14-09:00 2017/09/16-09:00 2017/09/18-09:00 2017/09/20-09:00 2017/09/22-09:00 2017/09/24-09:00 2017/09/26-09:00 2017/09/28-09:00 2017/09/30-09:00 2017/10/02-09:00 2017/10/04-09:00 2017/10/06-09:00 2017/10/08-09:00 2017/10/10-09:00 2017/10/12-09:00 2017/10/14-09:00 2017/10/16-09:00 2017/10/18-09:00 2017/10/20-09:00 2017/10/22-09:00 2017/10/24-09:00 2017/10/26-09:00 2017/10/28-09:00 2017/10/30-09:00 2017/11/01-09:00 Memory Usage [MBytes] Day Memory Usage for Four Months Memory Usage ಈతॲཧຖ೔SFMPBE SFMPBEఀࢭத SFMPBEఀࢭத ϦϑΝΫλϦϯά ສυϝΠϯ)5514Խ ສυϝΠϯ)5514Խ SFMPBEఀࢭ

Slide 70

Slide 70 text

• ngx_mrubyͷcacheΦϓγϣϯͰϦʔΫ͢Δύλʔϯ͋Δʁ • ݱࡏௐࠪதʢҟৗॲཧ࣌ʹϦʔΫ͍ͯ͠Δ͔΋ʣ • mruby_setͰ͸ͳ͘mruby_set_codeͳͲʹॻ͖׵͑ • Ϋϥε΍ϞδϡʔϧΛmrbgemԽͯ͠Ϗϧυ࣌ʹ૊ΈࠐΈ • ྫ֎ॲཧ΍ҟৗͳΞΫηε΁ͷΤϥʔॲཧͷݟ௚͠ 70 ϦϑΝΫλϦϯάͰ΍ͬͨ͜ͱ

Slide 71

Slide 71 text

71 0 5000 10000 15000 20000 25000 30000 2017/07/02-09:00 2017/07/04-09:00 2017/07/06-09:00 2017/07/08-09:00 2017/07/10-09:00 2017/07/12-09:00 2017/07/14-09:00 2017/07/16-09:00 2017/07/18-09:00 2017/07/20-09:00 2017/07/22-09:00 2017/07/24-09:00 2017/07/26-09:00 2017/07/28-09:00 2017/07/30-09:00 2017/08/01-09:00 2017/08/03-09:00 2017/08/05-09:00 2017/08/07-09:00 2017/08/09-09:00 2017/08/11-09:00 2017/08/13-09:00 2017/08/15-09:00 2017/08/17-09:00 2017/08/19-09:00 2017/08/21-09:00 2017/08/23-09:00 2017/08/25-09:00 2017/08/27-09:00 2017/08/29-09:00 2017/08/31-09:00 2017/09/02-09:00 2017/09/04-09:00 2017/09/06-09:00 2017/09/08-09:00 2017/09/10-09:00 2017/09/12-09:00 2017/09/14-09:00 2017/09/16-09:00 2017/09/18-09:00 2017/09/20-09:00 2017/09/22-09:00 2017/09/24-09:00 2017/09/26-09:00 2017/09/28-09:00 2017/09/30-09:00 2017/10/02-09:00 2017/10/04-09:00 2017/10/06-09:00 2017/10/08-09:00 2017/10/10-09:00 2017/10/12-09:00 2017/10/14-09:00 2017/10/16-09:00 2017/10/18-09:00 2017/10/20-09:00 2017/10/22-09:00 2017/10/24-09:00 2017/10/26-09:00 2017/10/28-09:00 2017/10/30-09:00 2017/11/01-09:00 Memory Usage [MBytes] Day Memory Usage for Four Months Memory Usage ಈతॲཧຖ೔SFMPBE SFMPBEఀࢭத SFMPBEఀࢭத ϦϑΝΫλϦϯά ສυϝΠϯ)5514Խ ສυϝΠϯ)5514Խ SFMPBEఀࢭ

Slide 72

Slide 72 text

• ϦϑΝΫλϦϯάલ͸5೔Ͱ10GBఔ౓ϦʔΫ(1೔2GB) • ىಈ࣌͸αʔόશମͰϝϞϦ2GB઎༗͠1೔Ͱ2GBϦʔΫ͢ Δঢ়گΛຖ೔reloadͯ͠ฏۉ3GBͰ҆ఆ͍ͤͯͨ͞ • ϦʔΫରԠޙ͸5೔Ͱ250MBఔ౓ͷϦʔΫ(1೔50MB) • reloadͱ૊Έ߹ΘͤΔͱฏۉ2GBͰ҆ఆͰ͖ΔՄೳੑ͋Γ 72 ϦʔΫ໰୊ͷߟ࡯

Slide 73

Slide 73 text

• ैདྷख๏͸200ສυϝΠϯͰ32GBytesαʔό͕150୆ඞཁ • ఏҊख๏͸ϝϞϦό΢ϯυͷ؍఺Ͱ1୆ʹऩ·ΔՄೳੑ͋Γ • 6ສυϝΠϯ૿ՃͰ1೔50MBͷϝϞϦ૿Ճʹऩ·Δܭࢉ • 200ສυϝΠϯͰ1೔2GBͷϝϞϦ૿Ճʹऩ·ΔՄೳੑ͋Γ • ϝϞϦҎ֎ͷΦʔόʔϔου͕Ͳ͜ʹग़ͯ͘Δ͔Λਵ࣌ධՁ 73 ཧ࿦తʹ΋αʔό୆਺ͷ100෼ͷ1͕ࢹ໺ʹ

Slide 74

Slide 74 text

7݄͔Β8݄ͷ2ϲ݄ؒͷτϥϑΟοΫมԽ 74 ূ໌ॻ਺͸ສ૿Ճ͕ͨ͠ɺ΋ͱ΋ͱ)551ͱ)5514྆ํॲཧ͍ͯ͠ΔͨΊ )551ͷυϝΠϯ͕)5514Խ͞Εͯ΋ͦΕ΄Ͳۃ୺ͳӨڹ͸ແ͍ɻ

Slide 75

Slide 75 text

ܧଓతͳվળʹΑΓ αʔό୆਺100෼ͷ1Λݱ࣮΁

Slide 76

Slide 76 text

·ͱΊ

Slide 77

Slide 77 text

• ߴूੵϚϧνςφϯτํࣜͷେྔূ໌ॻ؅ཧͷఏҊͱධՁ • ඞཁͳυϝΠϯͷΈͷಈతূ໌ॻಡΈࠐΈͱαʔόϓϩηε࠶ ಡΈࠐΈͷ௿଎Խ๷ࢭʹΑΔϝϞϦղ์ͷ૊Έ߹ΘͤͰ࣮ݱ • ϋʔυ΢ΣΞίετΛ࡟ݮՄೳ(কདྷతʹ͸200ສυϝΠϯ) • ॲཧੑೳʹ΋࣮༻্໰୊ͳ͘ઃఆ൓ө΋ਝ଎ʹՄೳ 77 ·ͱΊ

Slide 78

Slide 78 text

• 2017೥11݄Ͱ200ສυϝΠϯத໿7ສυϝΠϯ͕HTTPSԽ • ϝϞϦ࢖༻ྔʹج͍ͯreloadΛ࣮ࢪ͢ΔػೳΛ௥Ճ༧ఆ • ngx_mrubyࣗମ͕ࣗಈͰ࣮ࢪͰ͖ΔΑ͏ʹ͢Δ • reload͠ͳͯ͘΋ఆظతʹূ໌ॻσʔλΛύʔδͤ͞Δػೳ • τϥϑΟοΫό΢ϯυʹͳΓͦ͏ͳͷͰͦͷ؍఺Ͱݚڀ։ൃ 78 ࠓޙͷ՝୊

Slide 79

Slide 79 text

• ϓϩμΫτͷ਺೥ޙΛݟਾ͑ͯઌߦͯ͠ݚڀ։ൃ • ࣍͸ࠃࡍձٞΛ௨ͯ͠ੈք΁ڞ༗͍ͯ͘͠ • ৗʹઌΛߦ͖ϓϩμΫτ͕ग़ձ͏Ͱ͋Ζ͏นΛ৐Γӽ͑ଓ͚Δ • ࠓճ΋ී௨ʹ΍͍ͬͯͨΒେมίετ͕͔͔͍ͬͯͨ • ී௨ͩͱࢥ͑ͯ͠·͏ʮ౰ͨΓલͷݶքʯ͕͋Δ • ࠓ͋Δٕज़΍ৗࣝΛৗʹ͍ٙվળΛ৴ͯ͡औΓ૊Έଓ͚Δ 79 ਓͷൃ૝ʹج൫ٕज़͕଱͑͏Δঢ়ଶΛ໨ࢦ͢

Slide 80

Slide 80 text

ʮ౰ͨΓલͷݶքʯΛ௒͍͑ͯ͘