こんにちは、あるいはこんばんは。楽楽販売の開発をやっている@tacloseです☆
ISUCONに参加するのはこれで2回目ですが、
今回は7位でした!
微妙!とか言わないで!頑張った方ですよ!運が良かった方ですよ!(と言いたい!)
今日はそんなISUCON14がどんな感じだったのかを振り返っていこうと思います!
記事の概要・想定読者
- 想定読者
- 今年ISUCON出たけど、悔しい思いをした方
- 来年ISUCON出てみようかな?と思う方
- 記事の概要
- ISUCON14の細かいチューニングポイントはあまり取り上げません。
- Git管理やMakefileの準備やノウハウ集ではありません。
- ISUCONに挑戦する準備や練習、当日の困りポイントをまとめた体験談です。
では早速、当日までの準備から振り返ってみましょうっ
ISUCONの準備
前回の反省からはじまる
11月ごろ行われた作戦会議では以下の話が出ました。
前回の敗因はずばり準備不足、練習不足!以下のような社内ハンズオンを開催するぐらいの知識量はあったものの、 tech-blog.rakus.co.jp
当日は8時間という限られた時間で実践するのは至難の業でした。
前回の反省点
そこで今回は事前準備とサーバ構成変更の練習に重きを置くことにしました。
練習はISUNARABE!
ISUNARABE を使い、本番さながらの練習をしました。 特に課題だったAWSでの3台サーバの使い方や初動の役割分担を重点的に練習しました。前回に比べると少ない練習時間でしたが、効果はありました。
ISUCON当日
ISUCONの初動:初回ベンチマークまでにやる事!
私たちのチームでは以下の作業を分担して進めました。
- configやアプリをGit管理下に置く
- makeコマンドで設定ファイルやアプリをデプロイ
- MySQLやnginxの初期設定(slow queryのログ出力など)
作業が終わったら初回ベンチマークを実行。
10時半時点でスコア1000点でした。
初回後の次の一手:DBのINDEX見直し
nginxログ解析で遅いAPIは分かりますが、まずはDBのINDEXを整備するのが効率的。 pt-query-digestで解析し、30分~1時間で対応しました。この時点でスコアは3800点。
各自が怪しいポイントを重点的に攻める
我がチームは全員遊撃部隊!
- nginxログやプロファイラー結果を見て処理時間が長い箇所を探る
- 怪しい箇所を自由に攻める
13時半でスコア8000点、15時に15000点、16時に18000点まで到達しました。
4時以降:サーバ構成を真剣に考える
3台サーバの使い方を再検討。
- 1台をnginx+アプリ用、もう1台をDB用に割り当て
16時半でスコア26000点。
最後のチューニング
サーバ構成変更に伴い、nginxやMySQLの設定値を見直し。
17時半でスコア37000点。
最終結果
39957点
今回のISUCONの振り返り
良かった点
チームメイトに恵まれたこと。感謝感謝です!お疲れ様でした!
反省点
N+1問題への対処が不十分だったこと。
- 抜本的な解決策を思いついても時間内では躊躇してしまい、キャッシュで逃げてしまった。
場数を踏めばこういった勘所も磨かれると思うので、次回再挑戦したいと思います!
最後に
これからISUCON始める人、始めたばかりの人に参考になれば幸いです!
もしこれからISUCONはじめるぞ!という方は 目指せISUCON!!社内WEBパフォーマンス改善ハンズオンのすすめ - RAKUS Developers Blog | ラクス エンジニアブログ でも紹介している書籍を読まれたり、ローカルでパフォーマンスチューニングを練習してからやる事をお勧めします!
ランク外で終わっても非常に学びが多く楽しいイベントなので、是非みなさんトライしてみてください!!