ISUCON7本選で惨敗した
職場の同僚(@noda_sin, @T28_tatusya)と3人で「予算ZERO」というチームを組み,ISUCON7の本選に参加して,30チームのうち21位と惨敗してきた.
次女「お父さん昨日はどうだったの?」
— Toshiya SAITOH (@stoshiya) 2017年11月25日
俺「負けた…」
次女「予選は?」
俺「400チームで4位」
次女「本選は?」
嫁「30チーム中21位」
次女「ダメじゃん」
俺「…」
家庭内で威厳はおろか人権すら失った瞬間だった… #isucon #isucon7
事前準備
予選での振り返りで決めた作業分担を確認したり,ISUCON本選の過去問を解いたりして,これまでの出題傾向からいくつかの対策案を検討していた.しかし本選では全て空振りだった…
本選の内容
本選でのお題はクッキークリッカーというブラウザゲームにソーシャル要素を加えたものだった.また与えられたリソースは2コアの仮想マシン4台で,1台はデータベース,残りの3台がアプリという構成だった.ブラウザとの通信はWebSocketを使っており
当日の作業
- SSH鍵のセット
- 実装の切り替え
- 標準エディタの変更
- nginxの設定変更
- 静的コンテンツのgzip
- node/npmコマンドのシンボリックリンク作成
- koa-clusterの設定と排除
- New Relicエージェントのインストール
- ベンチマーク実施後のスクリーンショット保存
- コードリーディングとちょっとした修正
ベンチマークスコアへの貢献はほとんどできず,2人には申し訳ないと思った.
今回の仮想マシンは2コア構成なので,クラスタにすればシングルスレッドのNode.jsだから少しはよくなるだろうと,ウェブアプリケーションフレームワークのkoaにあわせてkoa-clusterを導入してみた.しかしソースコード修正後のプロセスリスタートに数十秒もかかってしまい,改善サイクルのブレーキにしかならなかった.「これなんかおかしくないか?」と指摘がもらったときにすぐ外せばよかった.
反省点
- 予選に引き続きアプリケーションのプロファイラを使わなかった.「推測するな計測せよ」
- 他の人が書いたコードを理解するのに時間がかかっている.
この2点に尽きる.最近コードを読んだり書いたりしていないし,とっさに手が出なかった.
最後に
御意.redisに突っ込めなかった自分は負け犬が吠えているだけですね… https://t.co/krQdvIB9gX
— Toshiya SAITOH (@stoshiya) 2017年11月25日
運営スタッフ,本選参加の皆さん,本当にお疲れ様でした.来年にはどうなっているかわからないけど,また同じチームで参加したい.(鬼に笑われそう…)