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

因此,严格按照正在传递的消息(传出)的大小进行操作,每人屏幕上每个不断移动的项目大约为 621 字节/秒或 (621/10) 62.1 字节/秒。这似乎有点低,一个良好的高速连接可以以这个“速率”每秒处理 1000 多个对象更新没问题。

4

1 回答 1

0

这里肯定有鱼腥味。根据他们提供的性能测试:这里mina 在大约 10 个连接上每秒能够处理 20K+ 405 字节的请求——比你看到的要多得多。

我的猜测是这里发生了某种导致延迟的时间问题。我会寻求数据包跟踪应用程序(如wireshark)的帮助,看看您在代码中的观察是否与原始网络数据相吻合。如果可能的话,我还会尝试用更多数据“淹没”服务器端——这可能会提供一些关于问题所在的见解。

我希望这会有所帮助,祝你好运。

于 2010-11-24T23:20:43.310 回答