ISUCON7決勝に参加してきました@チームinarisan

ということで、参加して、負けてきました。

isucon.net

正直、全然スコアのびず。

初期スコアが5000点位に対して、最終スコアが13600点くらい。人権は失っていませんが、仕事ができた感がありませんorz

優勝チームが65000点くらい、2位チームが28000点位、優勝チームが飛び抜けていますが、20000点超えたチームもそこそこいたみたいなので、全然だめでした。

お題は、クッキークリッカーをソーシャルライクに(みんなでクリックできるように)したもの。

ポイントは、アプリケーションによるサーバー4台に対する振り分け(いわゆるゲームのチャンネルシステムみたいなもの)と、ウェブソケットを使った通信の中でのアプリケーション改善。

できなかったことは大量にあるので、やったことくらいは記録に残しておきます。自分はアプリケーションメインなので、アプリケーションのことだけ。

やったこと

①ルームごとにサーバーの振り分けを矯正して、負荷をならしつつ、サーバーごとにデータストアを持てるように変更。

ルームの振り分けは1サーバーに集中させて、そこのデータストアで振り分けを管理するから、グローバルなデータストアは不要。(本当はここからインメモリ化しないといけない)

②ステータスの更新処理を0.5秒ごとから0.8秒ごと(くらい)に遅くする。ステータスは1秒以内にルーム内のユーザーに同期されれば良いので、おそくしちゃう。

(けど、ステータスの取得ロジックを最適化しきれなかった。)

③0.5秒なり0.8秒ごとに取得する必要があるステータスをキャッシュ化させる。

してみたけど、キャッシュの仕方が悪かったり、失効タイミングが微妙だったりで、ベンチマーカーのチェックに引っかかってしまう。

ということで

モニタリング、プロファイリング、などなど、問題点を見つける部分をもっと勉強する必要があります。

というか、全然わかってない、ということがわかった。

ブレブレだけど記念撮影しました。LINEやKlabの皆さまや運営に携わられてた皆さま、ありがとうございました。

f:id:sugilog:20171125204007j:plain