isucon13に参加しました
tkuchiki, Konboiとチーム「流れ弾」としてISUCON13に参加しました。
最終スコアは10,569で、最初にDBのindexを追加した以降大きくスコアを伸ばすことができず惨敗でした。
isuconに参加するたびに実力不足を痛感します。精進せねば。
事前にやったこと
- isucon本(達人が教えるWebパフォーマンスチューニング)を読み返しつつ、private-isuで素振り
当日やったこと
アイコンの静的画像書き出し
静的画像書き出しを行った後、ベンチ実行前の整合性チェックで失敗するようになってしまい、その修正対応でハマる。
icon_hashをDB管理するように修正しつつ、アイコン未設定の場合はNoImage.jpgのハッシュ値を固定で返すことでようやくベンチが通るように。
条件付きGETリクエストの対応には手をつけられず、かつnginxで画像を返すようにもできなかったためスコアは1,000点ほどしか改善せず。
search(N+1)の改善
fillLivestreamResponse
でN+1クエリが発生していたのでJOINを使って改善。
この対応でもスコアは1,000点ほどしか改善せず。
その後は、Konboiと一緒にその他の fill*Response
の改善を進めている所でタイムアップ。
振り返り
Keep
- Copilotを活用する
- 今年もisuconのタイミングでしかGoを触っておらず、かつ今回はローカル環境もない状態だったがCopilotの補完のおかげでコンパイルエラーでハマることはなくチューニングを進めることができたのはよかった
Problem
- 事前の練習不足
- 一つ一つのことに時間がかかりすぎてしまうのは練習不足に他ならない
Try
- 実際の想定環境で練習をする
- いつもローカルのDocker環境で練習するようにしていたが複数台構成の練習にはなっておらず、アプリケーションサーバ1台分のチューニングで満足してしまっていた
さいごに
運営の皆様、今年も素晴らしい問題をありがとうございました!
チームメンバーの二人も一緒に参加してくれてありがとう