ISUCON7 予選に参加した

  • このエントリーをはてなブックマークに追加

『はの肉』というチーム名で ISUCON7 に参加しました。チーム名は違いますが、メンバーは同じ会社の同期2人と組みました。

@mizukmb ← 私

@hanocha ← はの肉(オリジナル)

@otofu-square ← フロントエンド寺院僧侶

役割

特に明確に決めてなくて、なんか全般見れる感じにしようみたいな感じだった。当日はインフラ見てた。アプリはほぼ投げっぱなし 🙇

当日までにやったこと

  • 前回を踏まえて今回やること洗い出し
    • ちゃんとコードを GitHub で管理しようとかそんな感じ
  • matsuu/terraform-pixiv-isucon2016 で復習
  • 今回も初期構築用の Itamae レシピ書いた
  • とにかくボトルネックを探す -> 上から順番に潰すという感じでやっていく方針にした
  • 一回チームでやった時の感触をつかむために2時間位 @hanocha とやった。
    • アプリは GitHub で管理したいなあみたいな感じにあった
  • 社内勉強会の発表が迫っていて(というか大会前日)、段々 ISUCON どころではなくなった。
    • ISUCON について発表しろという意見については、まあ、はい

last-morning

当日

  • 9時集合な!
    • 9時起床(ごめんなさい)

  • 13時開始かー
  • あ、始まった。え!3台構成!?
  • 初期構築3回やらないとだめやん〜
    • Itamae のレシピかくのサボってたからロールの設定とか全くやってなかった。やってたらもっと早くなってたはず
  • 各サーバのCPUコア数とかメモリ容量見てたりルール確認したりしてた
    • ネットワーク帯域の上限あるのかあ。画像ファイルは304レスポンスおっけーなのかー(何も気がついてない)
  • とりあえず準備できたのでベンチ回す
  • myprofiler 見てクエリ実行回数多いところのインデックス効いてるか見たりインデックス効かせたりした
  • いつのまにか app コードが GitHub で管理できるようになってた。神!
  • デプロイとか Itamae 実行のスクリプト書いてた
  • 3台をどうやって使うか考えてた
    • AP, Web, DB と各サーバに1つずつロールを与えた。これは失敗な気がする
  • js ファイルや css, font などのアセットファイルが多かったので gzip 圧縮有効にした
  • alp, myprofiler, ベンチの結果を見ても静的ファイルを DB で管理してるのはおかしかったので nginx で返すようにする
  • まずは DB から既存画像を引っ張るスクリプト書いて抽出、 AP に転送した
  • mongodb でセッション情報を管理するように @otofu-square が実装してた。すごい!
  • POST /profile 受けたら、プロフィール画像を一度 web サーバのローカルに保存してから、 AP サーバに SCP で転送する感じにした
    • これも失敗したと思う。というかもっといい実装方法絶対あったけど時間なかったので泣きながら実装した。
  • user というローカル変数が使われていることに気づかず、何度ベンチ回してもバグって点数でなかった
    • Rust なら(ry
  • 終了30分前になったので余計なことして動かなくなったら怖いのでここで手を止めて差し入れのピザを食べてた
  • おわり

最終スコア

isucon7_result

http://isucon.net/archives/50961437.html

mirei

ISUCON 運営の皆様ありがとうございました!

来年もあったら参加する 🐘