2

比較的ペースの速いゲーム (Flash/Apache Mina Server バックエンド) を開発していますが、現在のセットアップで使用する帯域幅の正確なベンチマークを取得するのに苦労しています。

私の質問は、テストに必要な帯域幅の正確なベンチマークを取得するにはどうすればよいですか? 私が今していることは、オーバーヘッドを考慮に入れていませんか?

メッセージの送受信方法について

[out/in]Bandwidth+= message.toString().getBytes().length;

次に、現在の値を 250 ミリ秒ごとに出力します (「世界」の更新が現在行われている頻度であるため)。

10 個の「モンスター」がすべてランダムに動き回り、1 人のプレイヤーがランダムに動き回ると、この出力が得られます.. (ここでは 1 秒のウィンドウ)

In bandwidth: 1647, Outgoing: 35378
In bandwidth: 1658, Outgoing: 35585
In bandwidth: 1669, Outgoing: 35792
In bandwidth: 1680, Outgoing: 35999

したがって、渡されるメッセージ (発信) のサイズに厳密に基づいて行動すると、1 人あたり、画面上で絶えず移動するアイテムごとに、約 621 バイト/秒または (621/10) 62.1 バイト/秒になります。これは少し低いように思えます。高速接続が良好であれば、この「速度」で 1 秒あたり 1000 以上のオブジェクトの更新を問題なく処理できます。

4

1 に答える 1

0

ここは間違いなく生臭い。彼らが提供するパフォーマンス テストによると、mina は最大 10 の接続で 1 秒あたり 20K+ 405 バイトのリクエストを処理できます。

私の推測では、遅延の原因となっている何らかのテディング/タイミングの問題がここで進行していると思われます。私なら、wireshark などのパケット トレース アプリケーションの助けを借りて、コード内の観察結果が生のネットワーク データと一致するかどうかを確認します。可能であれば、より多くのデータでサーバー側を「フラッディング」することも試みます。これにより、問題がどこにあるのかについての洞察が得られる可能性があります。

これがお役に立てば幸いです。

于 2010-11-24T23:20:43.310 に答える