ISUCON7決勝に参加してきました@チームinarisan
ということで、参加して、負けてきました。
正直、全然スコアのびず。
初期スコアが5000点位に対して、最終スコアが13600点くらい。人権は失っていませんが、仕事ができた感がありませんorz
優勝チームが65000点くらい、2位チームが28000点位、優勝チームが飛び抜けていますが、20000点超えたチームもそこそこいたみたいなので、全然だめでした。
お題は、クッキークリッカーをソーシャルライクに(みんなでクリックできるように)したもの。
ポイントは、アプリケーションによるサーバー4台に対する振り分け(いわゆるゲームのチャンネルシステムみたいなもの)と、ウェブソケットを使った通信の中でのアプリケーション改善。
できなかったことは大量にあるので、やったことくらいは記録に残しておきます。自分はアプリケーションメインなので、アプリケーションのことだけ。
やったこと
①ルームごとにサーバーの振り分けを矯正して、負荷をならしつつ、サーバーごとにデータストアを持てるように変更。
ルームの振り分けは1サーバーに集中させて、そこのデータストアで振り分けを管理するから、グローバルなデータストアは不要。(本当はここからインメモリ化しないといけない)
②ステータスの更新処理を0.5秒ごとから0.8秒ごと(くらい)に遅くする。ステータスは1秒以内にルーム内のユーザーに同期されれば良いので、おそくしちゃう。
(けど、ステータスの取得ロジックを最適化しきれなかった。)
③0.5秒なり0.8秒ごとに取得する必要があるステータスをキャッシュ化させる。
してみたけど、キャッシュの仕方が悪かったり、失効タイミングが微妙だったりで、ベンチマーカーのチェックに引っかかってしまう。
ということで
モニタリング、プロファイリング、などなど、問題点を見つける部分をもっと勉強する必要があります。
というか、全然わかってない、ということがわかった。
ブレブレだけど記念撮影しました。LINEやKlabの皆さまや運営に携わられてた皆さま、ありがとうございました。