YAPC::Asia Tokyo 2015 「ISUCONの勝ち方」メモ

  #conference

インフラ力が上がると噂の競技ISUCONについて、ISUCON4優勝者自ら必勝法を公開。
そのうちスライドも公開して頂けるらしいが自分のために。

リンク

スピーカー: @kazeburo さん

時間配分

  • 競技全体では7時間
  • 最初の1時間
    • まだ慌てるような時間じゃない
    • 課題の理解、プロファイリング・チューニングの方向性を決める
  • 最後の30分
    • 再起動テストだけに使う
    • 再起動の失敗はよくある
  • 上記を考慮すると、実際の作業時間は5時間ほど

事前準備

チューニングの進め方

1. 課題の理解

  • レギュレーションや説明をよく読む
    • スコアの算出方法、失格条件は特に注意
  • 実際に動いているアプリケーションを見てみる
  • とりあえずベンチ動かす
    • チューニングしていなくてもベンチ取る
    • ちゃんと動いているかを確認する

2. プロファイリング

  • ログ解析や負荷確認
  • ベンチツールの挙動を把握する
    • アクセス頻度の高い所を優先的にチューニングする
    • 重いけどスコアに関係ない部分は無視できるかも
    • analyze_apache_logskataribeを利用する
  • mysql slow log解析
  • アプリケーションのプロファイリング
    • straceでシステムコールレベルの解析
    • tcpdumpで通信の解析
  • サーバの負荷
    • top, iftop, iotop, dstat, …

3. サーバ構成の把握

  • どんなミドルウェアがいるのか
  • どのポートが使われているのか

4. チューニングの方向性を決める

  • CPUの気持ちになり、コンテキストスイッチを減らす
    • 不要な参照・通信・プロセスをとにかく減らす


チューニングのヒント


comments powered by Disqus