2012-02-26 2 views
1

最近、私はオンラインゲーム用のロビーを作成しようとしています。 1000人以上のオンラインユーザーがゲームをプレイしています。したがって、私はロビーをこの莫大な量のオンラインと互換性を持たせるべきです。 最初は、ロビーのデータを保存して5秒ごとにフェッチするMySQLデータベースを試しました。これは私のサーバーを爆発させましたが、一般ユーザーにはアクセスできませんでした。データベース決定を伴うオンラインゲームのためのロビー作成の挑戦

次に、テキストファイルにデータを保存することを思いつきました。それは仕事の複雑さのためにも災害でした。

私が楽しみにしている別のオプションはSQLiteです。

あなたはこれをお勧めしますか、オンラインゲームのロビーを作成するためのより良い提案がありますか?

プロジェクトはPHPで作成されています。

+2

私はゲームロビーが何であるか、それが何をしているのか分かりませんが、MySQLが正しく管理され、適切なテクニックとペア設定されていれば、そのようなサイトのデータストレージを処理できるはずです。 MySQLが犯人であることをどう知っていますか?最適化するためにあなたのクエリを 'EXPLAIN'しようとしましたか? 「5秒ごとにデータを保存してフェッチする」アプローチは、コード構成、保存/フェッチ、サーバー構成などのさまざまな問題によって影響を受ける可能性があります。 –

+0

感謝します。@ JaredFarrish、私は試しました私のコードを最適化することに最善を尽くしていますが、ロビーをリフレッシュするために必要な数多くの接続はあなたは、MySQLはその巨大なデータ転送が可能だと思いますか? –

+0

Prevaylerのようなものを試しましたか? – Victor

答えて

2

1000人のユーザーが5秒ごとに読み取りを実行すると、200クエリ/秒となります。これはmysqlにとってはあまり意味がありません。もちろん、実行しているハードウェアによって異なります。 あなたのボトルネックが本当に何であるかを知る - ほとんどの時間が実際にdb接続に費やされていますか?おそらく、Webサーバーの設定を通じてさえもスピードアップできます。

キャッシュはこのユースケースでは実行可能ではないようです。何らかのメモリ内のデータベースはどうですか? (データがメモリに収まることが期待される場合)

データをマスターし、スレーブレプリケーションを使用します。より多くのハードウェアを投げてください。あなたのデータモデルが十分に単純であれば、nosqlを調べてください。