ISUCON11 予選に参加しました #isucon
ISUCON11予選に、去年と同じヌルポインターマリアユニバースというチームで id:polamjag id:Pasta-K と出場しました。
isucon.net
最終スコアは36971 でした。リポジトリはこちらです。
github.com
問題・競技環境が素晴らしかった
まず、今回の出題は本当にすごくよかったです。出題者の方、おつかれさまです。
問題は、シンプルな割にボリュームが多く、ボトルネックが移りかわるすごくいい問題だし、見てて面白かったです。実装も綺麗で読みやすかったのがよかったです。
ベンチマーカーのトラブルもちょっとあったとはいえ、全般的にほぼ待ち時間なくて快適。全体的に最高です。
個人のふりかえり
いい問題だっただけに、点数を出せなくて個人としての反省点は多い。
まず、手数が足りなかった。ボリュームが多かったけど、手を動かす速度に課題あったなーという感じ。凡ミス多かったり、ログとかデプロイとかやるだけのことものんびりやってしまった。最近業務で手を動かしてないし、ちょっとずつ鈍ってきている可能性がある。
作戦ミスもあったかなー。書き込み叩き落としてるのがおかしい・ポイントが多いとスコアが何倍にもなることはわかってたし、データ量も多い。結局叩き落とす数を減らせなかったので、大技をそこに集中してもよかった。
何をやったの
今回も15分スプリントでやりました。変化する状況はスプリント会に詳しいです https://github.com/tatsuru/isucon11-qualify/issues/3
自分の視点を中心に思い出してます。酒を飲んでるので微妙な前後はあるかも。
- 基本的には今回もインフラ担当、あとは他2人がペア作業するあいだの司令塔っぽいこととかファシリとか。
- Cfn適用、計測環境、デプロイ設定、あたりの設定。MariaDBとMySQLで設定値が違うところで若干ハマる
- すぐできそうなSQL改善して17000くらい
- サーバ分散。DBヘヴィなこと、ISUからの投稿先を指定できることもあって、分散すると大事だろうとなったので早めに着手
- チームメンバが condition の調査も始めてる
- この辺で昼休み
- 2台構成で動いてる
- ここから、アプリケーション側は condition に手を付け始める。参照側のチューニングからやってたけど、今振り返るとMySQLを脱出するところをやるべきだったポイント。
- 3台構成にした
- DB動かしたときにちょっと不具合出してハマった
- このへんで30000弱
- 小細工
- dropProbability 一気に下げてみたり
- conditional get 実装したり(効いてなかった...)
- dropProbability 0.75 にして 36000
- デバッグの手伝いしつつ作戦考える
- 画像をファイルに書くの成功
- 苦戦したけど成功
- DBが暇になって、バランスが結構変わった
- 1時間前になってベンチマーカー停止
- あんまり分散できてないのでDBネックを解消する手を作ってた。アプリが片方暇なので仕事のバランス調整準備
- クライアントキャッシュきいてないねっての直したり
- ベンチマーカー復活、分散作戦考えていく
- 負荷が変わらない前提でホストの分散具合を調整していく
- チームメンバは大技として trend の N+1 に取り組む
- 最後のあがき
- ログ切ったりモニタリング止めたり、dropProbability 調整したり
- 最後5分で db.SetMaxOpenConns(10) のままだったのを見つけたので100にしてみる
- 最後のベンチ、速くなった気がするけど制限時間に終わらなかったのでスコアわからず
まとめ
問題は成功、個人としては反省。1年間つらい気持ちで過ごしそうな気がする。精進しよう。
ちなみに去年はこちら
wtatsuru.hatenadiary.com
このブログISUCONばっかりになってるな