Slide 1

Slide 1 text

ֶੜʹαʔόΛ2500୆ߏங
 ͤ͞Α͏ͱͨ͠

Slide 2

Slide 2 text

ICTτϥϒϧγϡʔςΟϯάίϯςετ • ֶੜ޲͚ͷL1ʙL7ͷίϯςετ • ӡӦΛ͍ͯ͠ΔֶੜͷϨϕϧ͕ҟৗʹߴ͍ • ༧બ໰୊ • ࣾձਓ͕࡞੒ • ຊઓ͸ӡӦΛ͢Δֶੜ͕͢΂ͯग़୊/ߏங

Slide 3

Slide 3 text

ग़୊ͨ͠໰୊ • Linuxαʔόʹsshͯ͠nginxΛೖΕͯ΋Β͏ • +ࢦఆͨ͠ݻఆͷJSONΛฦͯ͠΋Β͏ • ↑ͷߏ੒Λ100୆ʹରͯ͠࡞ۀͯ͠΋Β͏ • ༧બͷҰ໰໨ͩͬͨͷͰ • sshͯ͠ίϚϯυ͕ଧͯΔ͔ • ؆୯ͳࣗಈԽ͕Ͱ͖Δ͔ • Λݟ͔ͨͬͨ • 100୆ʹssh͢Δܦݧ΋ͳ͔ͳ͔ͳ͍ͩΖ͏ • 25νʔϜ x 100୆ = 2500୆ʂ

Slide 4

Slide 4 text

ճ౴ঢ়گ • ໰୊จ: https://gist.github.com/kurochan/0100c43de27c953d18b9dfca290f7b77 • νϡʔτϦΞϧͲ͓Γ1୆ߏஙͰ͖ͨνʔϜ • 25νʔϜ (શνʔϜnginxͷΠϯετʔϧͰ͖ͨʂ) • ແ͔͠͠Βͷํ๏ͰߏஙΛࣗಈԽͨ͠νʔϜ • 16νʔϜ (64%ʂ) • खಈͰͻͨ͢ΒίϚϯυΛଧͬͯ࠳ંͨ͠νʔϜ • 1νʔϜ • sudo apt install yumͯ͠yumΛ࢖͑ΔΑ͏ʹ͠Α͏ͱͨ͠νʔϜ • 1νʔϜ

Slide 5

Slide 5 text

ղ౴ྫ • ౿Έ୆αʔό͔ΒγΣϧεΫϦϓτͰϧʔϓΛ
 ճ͢νʔϜ͕΄ͱΜͲ • 1νʔϜ͚ͩansibleΛ࢖ͬͯஸೡʹߏங͍ͯͨ͠

Slide 6

Slide 6 text

ग़୊؀ڥ • 2500୆΋Ͳ͏΍ͬͯ༻ҙ͢Δͷ͔ • 2500VM΋ݐͯΔͷ͸ඇݱ࣮త • ແঈఏڙͱ͸͍͑͘͞Β͞Μʹਃ͠༁ͳ͍ • ssh͕Ͱ͖ͯίϚϯυ͕ଧͯΕ͹ͳΜͰ΋͍͍ • ίϯςφʂ • LXD (Linux Container Daemon) • Docker͕ΞϓϦέʔγϣϯίϯςφ
 ͳΒLXD͸γεςϜίϯςφ

Slide 7

Slide 7 text

LXDίϯςφͷத͔Βݟͨܠ৭ • ී௨ͷVMͱ΄ͱΜͲ͍ͬ͠ΐ(Լखͨ͠Βؾ͔ͮͳ͍)

Slide 8

Slide 8 text

͔ͤͬ͘ͳͷͰ௅ઓ • 1ίϯςφ͋ͨΓ0.1CPU x 256MB Memory x 256MB Disk • 36ίΞCPU x 224GB MemoryͷVM x 2Ͱϗετ͢Δ • 1VM͋ͨΓ1500ϗετ(ίϯςφ)ऩ༰͍ͨ͠ • ίϯςφ͸εέʔϧ͢Δͷ͔ࢼ͔ͨͬͨ͠

Slide 9

Slide 9 text

ݕূ • VM: 36ίΞCPU x 224GB Memory • OS: Ubuntu16.04 • LXD: 2.21 • 1500ίϯςφੜ੒͍ͨ͠ • Storage: ZFS • Solaris͕ݩɺ*BSD΍Linuxʹ΋Ҡ২͞Ε͍ͯΔ • ϑΝΠϧγεςϜࣗମ͕RAIDػೳΛ࣋ͭ(RAID-Z) • Copy on Write͕͋Δ • ॏෳഉআ͕Ͱ͖Δ (༗ޮʹ͢Δͱ͖͸ϝϞϦফඅʹ஫ҙ)

Slide 10

Slide 10 text

16ϗετੜ੒ͨ͠ॴͰΤϥʔ͕ग़Δ • Failed to allocate directory watch: Too many open files • ϗετ(਌)ଆͷsystemdͷϦιʔε੍ݶʹҾ͔͔ͬΔ • nofile(ϑΝΠϧΦʔϓϯ਺)ͷ্ݶΛ্͛Δ • inotify(ϑΝΠϧ؂ࢹ)ͷ্ݶΛ্͛Δ • vm.max_map_count(ϝϞϦϚοϓ)ͷ্ݶΛ্͛Δ • ຊ൪ӡ༻޲͚ͷυΩϡϝϯτ: 
 https://github.com/lxc/lxd/blob/master/doc/production-setup.md

Slide 11

Slide 11 text

600ϗετੜ੒ͨ͠ͱ͜ΖͰΤϥʔ͕ग़Δ • failed to create new OS thread

Slide 12

Slide 12 text

LinuxͷPIDͷ্ݶ஋ • ID͕ৼΕͳ͍͍ͤͰ32768ݸ͔͠ϓϩηεཱ͕ͨͳ͍ • ௨ৗ໰୊ʹ͸ͳΒͳ͍ͷͰ࢝Ίͯ஌ͬͨ • 6ܻͷPIDͳΜͯΈͨ͜ͱͳ͍ • 60ສݸʹͨ͠(pid_max, thread-max)

Slide 13

Slide 13 text

1300ίϯςφੜ੒ͨ͠ͱ͜ΖͰΤϥʔ͕ग़ͨ • cgroup͕࡞Εͳ͘ͳͬͨ • syslogΛಡΉͱ…

Slide 14

Slide 14 text

ఘΊͨ • ༧બ։࠵લ೔(ฏ೔)ʹLinuxΧʔωϧͷΤϥʔ͸͖͍ͭ • ͵ΔΆ & Linux kernel oops • 1300ίϯςφ & ΞΠυϧঢ়ଶͰϩʔυΞϕϨʔδ600 • 16ίΞCPU x 196GB VM x 4୆ʹ੾ସ • 1300ίϯςφ·Ͱ͸Քಇͤ͞Δ஌ݟΛಘͨͷͰ • 800ίϯςφ x 4୆Ͱ3200ϗετ(ίϯςφ)ੜ੒ͨ͠

Slide 15

Slide 15 text

ຊ൪ӡ༻ • ΘΓͱ༨༟Ͱಈ͍ͯ͠·ͬͨ

Slide 16

Slide 16 text

ײ૝ • (ίϯςφ͋ͨΓͷෛՙ͕͍ͨͨ͜͠ͱͳ͍͚Ͳ)
 3200ίϯςφӡ༻͢Δ஌ݟΛಘͨͷ͸Ͱ͔͍(?) • ίϯςφ͸ແݶʹεέʔϧ͢ΔΘ͚Ͱ͸ͳ͍(ctx switch) • ZFSͷCoW x ॏෳഉআ͍͢͝ • 256MB(limit) x 800ϗετ = 205GBফඅΛ֮ޛ͍ͯͨ͠ • ࣮ࡍ͸3.11GB͔͠࢖͍ͬͯͳ͍ • ಉ͡Α͏ͳ؀ڥͰಉ͡Α͏ͳࣄ͔͍ͯ͠͠ͳ͍ͨΊ