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

ISUCONボツ技かるた / ISUCON Reject Karuta

ISUCONボツ技かるた / ISUCON Reject Karuta

Hiroki Tanaka

January 18, 2020
Tweet

More Decks by Hiroki Tanaka

Other Decks in Programming

Transcript

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

    View Slide

  2. ISUCON、ご存知ですか?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. ISUCONの「い」

    View Slide

  8. いえないような
    パスワード
    暗号強度

    6d8bc1284964660372e0
    b7f84d9053cb40b50b39

    aG9nZWZ1Z2FwaXlvCg==

    View Slide

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

    View Slide

  10. ISUCONの「す」

    View Slide

  11. すべて
    /dev/shm

    /var/lib/mysql /dev/shm

    View Slide

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

    View Slide

  13. ISUCONの「こ」

    View Slide

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

    View Slide

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

    View Slide

  16. ISUCONの「ん」

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. ありがとうございました

    View Slide