ISUCON8本戦にk02で参加し惨敗しました(15位)

f:id:waniji:20181023001847p:plain 初の本戦出場、スコアは5,124で順位は30組中15位でした。
シェアボタンを有効に出来ず勝負の土俵に立てなかったので、非常に悔しいです。

当日やったこと

[10:00 - 10:30]

  • ポータルサイトにログインしてレギュレーションを読む
  • 初期状態でベンチ実行
  • isuconユーザーに公開鍵認証でログインできるようにする
  • 全台でmysqldumpを実行

[10:30 - 11:00]

  • アプリケーションを操作して挙動を確かめる

[11:30 - 12:00]

  • サーバの情報をKibelaにまとめる
  • ベンチ前後のDBデータ件数などをKibelaにまとめる

[12:00 - 13:00]

  • ランチ兼ねて作戦会議
  • ここからアプリ担当(kyokomi,yasu)とインフラ担当(waniji)に分担

[13:00 - 13:30]

  • MySQLをDockerから切り離して別サーバに構築

[13:30 - 14:30]

  • MySQLのスロークエリを有効にしてmysqldumpslowで分析
  • SHOW CREATE TABLEの結果をKibelaにまとめる

[14:30 - 15:00]

  • NginxをDockerから切り離す

[15:00 - 16:00]

  • Nginxで静的ファイルを配信したが、何故かレイアウトが崩れてしまい戻す
  • ここで大幅なロス

[16:00 - 17:00]

  • sendfile, tcp_nopush, keepalive_timeout の設定を追加
  • Nginx+Appが1台、Appのみが2台、DBが1台の構成にする
  • 再起動用の設定を全台に行う

[17:00 - 18:00]

  • シェアボタンを有効にするもエラー多発で戻す

良かった点

  • Kibelaに情報をまとめた
    • Slackだと流れてしまう情報が見やすく便利だった
  • 各種計測ツールをスムーズに導入することが出来た
    • 事前練習の賜物

悪かった点

  • WEBサーバ3台+DBサーバ1台という構成にとらわれすぎた
    • 想定解法がMySQLのmaster/slaveだったが考えつかなかった
  • CPUに余裕があることに対し早めに疑問を持てなかった
    • 早々にシェアボタンを有効にしてボトルネックを調査すればよかった
  • シェアボタンの部分開放が思いつかなかった
    • 業務で10%開放のケースはよくあるのに何故思いつかなかったのか...
  • パーティションまで手が回らなかった
    • ここは気付いて後回しにしてしまったがゆえに悔しい...
  • 1つ1つの作業が遅かった
    • インフラ側の作業をもっと早く終わらせるべきだった
    • 日々の鍛錬が足りない

最後に

問題、会場、運営、どれをとっても素晴らしく、有意義な時間を過ごすことが出来ました。
次回があるならば必ずリベンジします。悔しい。 f:id:waniji:20181020193432j:plain f:id:waniji:20181020194230j:plain f:id:waniji:20181023002133j:plain