ISUCONボツ技かるた2020/01/18@dabits
View Slide
ISUCON、ご存知ですか?
ISUCONとは● Iikanji Speed Up CONtest = ISUCON● 3人1組8時間で行うサーバサイドチューニングコンテスト● LINE社が毎年主催、賞金100万円● 問題作成は毎年持ち回り○ ‘19 さくらインターネット & mercari○ ‘18 DeNA
ISUCONの楽しさ● スコアランキングがリアルタイムに出る● 割と本当の業務に直結する改善課題が多い● 何気にチームワークが一番大事
ISUCONのボツ技とは● ISUCON本戦もしくは本番環境では絶対に使えないチューニング手法● 本戦前の個人練習戦で編み出したり、人から聞いたり。。。!
年始なので「い」「す」「こ」「ん」のかるたにして紹介します
ISUCONの「い」
いえないようなパスワード暗号強度い6d8bc1284964660372e0b7f84d9053cb40b50b39↓aG9nZWZ1Z2FwaXlvCg==
いえないようなパスワード暗号強度● DBに保存するパスワードを極力簡単な暗号化方式にすることでCPUリソースを確保する技● 問題によってはログイン試行回数が多く、SHA1など暗号化処理でCPUを大量消費する● まぎれもなく本番環境ではそんなことしてはいけない、本戦でも場合によっては失格に
ISUCONの「す」
すべて/dev/shmす/var/lib/mysql /dev/shm
すべて/dev/shm● I/Oが発生するものをすべて/dev/shmに入れる技● /var/lib/mysqlを/dev/shmに突っ込むと実質オンメモリに!?● スコアが低い割に再起動すると吹っ飛ぶのでボツ
ISUCONの「こ」
このデータ整合性ないけどいいやこ
このデータ整合性ないけどいいや● 3台のサーバを自由に使っていい問題の場合、すべてのサーバで捌く代わりにデータ同期を取らない技● ベンチマーカーの作りが甘い場合、1セッションをすべて1サーバで捌くことがあり、ベンチがNGにならない● 本番環境を前提にした場合、LBで確実にuidごとに分岐できればいいが、そもDBシャーディングなどのほうが良い
ISUCONの「ん」
んんん、ここは流入制限でsleep1 !ん
んんん、ここは流入制限でsleep 1!● 頻繁にajaxされるページに対してsleep 1を入れることにより、1ユーザあたりのリクエスト数を減らしてCPUリソースを確保する技● ISUCONではルール上JSの書き換えが禁止されているため、ポーリングの回数を減らすためにこの手法が度々使われる● ISUCONでは容認されるが本番環境ではそもそもポーリングの頻度をクライアントプログラム側で減らすべき
興味を持ったら過去問題やってみましょ!https://github.com/isucon
ありがとうございました