インフラ料金をどうにかするとか、本家サーバに迷惑かかんないような叩き方しないととか、処理能力のパンクに備えるとかの改修を連続的にやっている。
シャド観がだいたい5000円弱かかってて、やってる感じだとメトログラフはもっとかかりそう。
一人分のデータが、シャド観のときに比べて桁違いに重いんよ。
1キャラしかさわってない人でも、全キャラぶんひたすら「0」って書いてあるデータを抱えてくる。おまけにキャラは今後も増えるので、加速度的に厳しい未来が待っている。
で、その大きなデータを読んで束ねて集計をやるインスタンスのメモリがだいぶ嵩んでおり、シャド観の頃は1~2GBでなんとかなっていたけど、もう4GB割り当てないとメモリが溢れて死んでしまう。
メモリは高いので、なるべく使わんように工夫したい。
それには、一度に扱うデータを小さくする必要がある。
処理を分割しよう
シャド観の時からやっていることではあるが、ある程度の大きさに処理をわけて一回の処理の単位を小さくしている。処理を分けるときの材料にしていたのがシャド観のときはFIDの文字列で、こいつをハッシュ化した上で小分けにしていた。
今回はSID(10桁くらいの数字あるでしょ)を基準にするが、こいつをハッシュにするのは具合が悪かったので、番号の一部を切り取って処理を100分割することにした。
100て。めんどくせえ。
今の規模なら10分割でいいけど、10でまかないきれなくなった時の再改修を想像したら具合が悪くなった。やるならいましかねえ。
処理のためのインスタンス起動回数が単純に増えた。
処理の単位は飛躍的に小さくなったものの、ストレージに保存するファイル数が飛躍的に増えた。
ストレージの料金はファイルのサイズと操作をしたファイル数が大きく影響するので、集計処理の負荷を減らす代わりにストレージ料金を余分に支払う覚悟を決めたって形になる。
RDB使えばいいじゃんという話もあるが、クラウドのDBって高いの。趣味の領域を簡単に超えちゃうので、なんとかテキストでやりくりしたい。
この辺の都合だけ考えると、さくらとかがやってるレンタルサーバは破滅的に安いサービスだ。MySQLなんぼつかってもいいなんて素敵すぎる。
あっちで収集やってこっちに転送するであるとか。
いやいやそんな。でもありだな。。。
現在の風景
また設計を変えるかもしれないのでメモ書き。
収集の処理を100分割にして、内部の処理もそれぞれ100コ単位で分割する。
集計は収集時に分割したのと同じ粒度でファイルを取得し、処理を100回繰り返す。これでプレイヤーごとに必要なグラフ用のファイルがストレージに計れる。
もっかのところ所要時間は2時間ちょいくらい。
One thought on “じみーーーな改修”