今回はソーシャルゲームのインフラネタから
データベースのチューニングについて
MySQLを使うことが多かったが、一般的なチューニングの話は他のブログなどにゆずるとして、ソーシャルゲームならではのお話です。
MySQLの具体的なチューニングでなくてごめんなさい(^^;
1、ボトルネック
一番大事なのは、どこがボトルネックになっているのかを知ること。
これなくしてチューニングしても、的外れな努力に終わることになるからね。
特にソーシャルゲームの場合は、イベントなども多いし、データも増え続けて行くので、最初に想定していたボトルネックと違ってくることがあるので注意
イベントの種類によっても別のボトルネックが出てくることもあるし、データが増えてきてメモリが足らなくなってくることもあります。
運用中も常に新しいボトルネックが発生していないか確認することが重要になってます。一度チューニングしたからそれで終わりってことにはなりません。
2、最適化しすぎない
アプリ毎に、そのアプリの特性に合わせてチューニングすることも重要ですが、アプリの特性は時間とともに変わってくることも多いし(特にイベントは、外れたイベントを続けていても意味ないし)現状に合わせすぎると逆にそこがボトルネックになることもありますからね。
あとソーシャルゲームでの特徴としては、レスポンスタイプが重要ってことかな。
まぁ他のシステムでも一緒ですが、より重要であり、例えば平均レスポンスタイムを改善するよりも一番時間のかかる処理を改善することを優先することもあります。
そしてもっと大事なのが、落ちないこと!!
想定よりもアクセスが増えてスワップするようなことがないようにすることです。
スワップしちゃうと落ちてしまいますからね。
例えばグローバルバッファも少し少なめにしたり、フリーメモリを少し多めに見積もっておきます。もちろんデータが増えても直ぐに落ちたりしないように余裕を持たせておくことも重要ですね。
◆そして・・・
当たり前ですが、ずっと運用を続けて行くので、状況を常に確認しておくことが重要。
正常時の負荷(どのくらいのアクセス時にどのくらいの負荷になるとかの目安を覚えておいたり)負荷が増えていたらその増加ペースがどのくらいかとか。
特定のイベント時の負荷の傾向とかも知っていた方がいいですね。
そうすれば、負荷で問題がおこってから慌てて対策をするようなこともなくなるでしょう。
問題が起こる前に、問題を予想して、先に対策をしておけば問題がでることもなくなります。
2012年04月22日
この記事へのコメント
コメントを書く
この記事へのトラックバック

