Slide 1

Slide 1 text

ISUCON ボツ技 かるた 2020/01/18 @dabits

Slide 2

Slide 2 text

ISUCON、ご存知ですか?

Slide 3

Slide 3 text

ISUCONとは ● Iikanji Speed Up CONtest = ISUCON ● 3人1組8時間で行うサーバサイドチューニングコ ンテスト ● LINE社が毎年主催、賞金100万円 ● 問題作成は毎年持ち回り ○ ‘19 さくらインターネット & mercari ○ ‘18 DeNA

Slide 4

Slide 4 text

ISUCONの楽しさ ● スコアランキングがリアルタイムに出る ● 割と本当の業務に直結する改善課題が多い ● 何気にチームワークが一番大事

Slide 5

Slide 5 text

ISUCONのボツ技とは ● ISUCON本戦もしくは本番環境では絶対に使えな いチューニング手法 ● 本戦前の個人練習戦で編み出したり、人から聞 いたり。。。!

Slide 6

Slide 6 text

年始なので 「い」「す」「こ」「ん」の かるたにして紹介します

Slide 7

Slide 7 text

ISUCONの「い」

Slide 8

Slide 8 text

いえないような パスワード 暗号強度 い 6d8bc1284964660372e0 b7f84d9053cb40b50b39 ↓ aG9nZWZ1Z2FwaXlvCg==

Slide 9

Slide 9 text

いえないようなパスワード暗号強度 ● DBに保存するパスワードを極力簡単な暗号化方式にすること でCPUリソースを確保する技 ● 問題によってはログイン試行回数が多く、SHA1など暗号化処 理でCPUを大量消費する ● まぎれもなく本番環境ではそんなことしてはいけない、本戦で も場合によっては失格に

Slide 10

Slide 10 text

ISUCONの「す」

Slide 11

Slide 11 text

すべて /dev/shm す /var/lib/mysql /dev/shm

Slide 12

Slide 12 text

すべて/dev/shm ● I/Oが発生するものをすべて/dev/shmに入れる技 ● /var/lib/mysqlを/dev/shmに突っ込むと実質オンメモリに!? ● スコアが低い割に再起動すると吹っ飛ぶのでボツ

Slide 13

Slide 13 text

ISUCONの「こ」

Slide 14

Slide 14 text

このデータ 整合性 ないけどいいや こ

Slide 15

Slide 15 text

このデータ整合性ないけどいいや ● 3台のサーバを自由に使っていい問題の場合、すべてのサー バで捌く代わりにデータ同期を取らない技 ● ベンチマーカーの作りが甘い場合、1セッションをすべて1サー バで捌くことがあり、ベンチがNGにならない ● 本番環境を前提にした場合、LBで確実にuidごとに分岐でき ればいいが、そもDBシャーディングなどのほうが良い

Slide 16

Slide 16 text

ISUCONの「ん」

Slide 17

Slide 17 text

んんん、ここは 流入制限で sleep1 ! ん

Slide 18

Slide 18 text

んんん、ここは流入制限でsleep 1! ● 頻繁にajaxされるページに対してsleep 1を入れることにより、 1ユーザあたりのリクエスト数を減らしてCPUリソースを確保す る技 ● ISUCONではルール上JSの書き換えが禁止されているため、 ポーリングの回数を減らすためにこの手法が度々使われる ● ISUCONでは容認されるが本番環境ではそもそもポーリング の頻度をクライアントプログラム側で減らすべき

Slide 19

Slide 19 text

興味を持ったら 過去問題やってみましょ! https://github.com/isucon

Slide 20

Slide 20 text

ありがとうございました