ISUCON 9 の予選にチーム「5000兆IOPS欲しい!」で参加してきました。 メンバーは「@shora_kujira16」と「@smiken_61」です。
最終的に7000点ちょっとのスコアでした。バックエンド何もわからない...。
やったこと
だいたい時系列順
nginx とか mysql の設定
kataribe を使えるようにしたり、slow query の設定をやりました。練習で一度やっていたのでスムーズにできました。
あと restart.sh
というシェルスクリプトを用意して systemd のサービスのリスタートや、設定ファイルの cp を一発で出来るようにしました。
categories のインメモリ化
getCategoryByID
の実装がやばいので手を付けたいとなって、categories テーブルは件数少ないかつ変更されないのでメモリに載せて良いことがわかりました。
実装してベンチ投げると4000点ぐらいが返ってきました。
その他
自分がやったのは↑2つぐらいで他は大体 @shora_kujira16 さんがやってくれました
- 画像を nginx から配信
- select する時に不要な column を削除
- 3台構成
- 1台目が nginx + mysql
- 2台目と3台目が app server
- 適宜 index 付与
getNewItems
の N+1解決- campaign の値を 0-4 に変えてスコアガチャ
考えていたこと
- クエリの実行が遅いしどこかでロックが発生してそう?
- ユーザーにあった商品を並べることで、売上は上がりそうだけど、これは ISUCON なのか??