2

更具体地说,我用 java NIO 编写了一个服务器,它运行良好,经过一些测试我发现由于某种原因,平均调用 SocketChannels write 方法需要 1ms,另一个 read 方法手平均需要 0.22 毫秒。

现在起初我认为在 Socket 上设置发送/接收缓冲区值可能会有所帮助,但经过考虑后,所有消息都很短(几个字节),我大约每 2 秒发送一条消息联系。发送和接收缓冲区的大小都超过 1024 字节,所以这不是问题,我确实有数千个客户端同时连接。

现在我对此有点想法,这是否正常,如果是,为什么?

4

2 回答 2

0

我将从使用 Wireshark 消除变量开始。

于 2010-12-14T21:21:48.097 回答
0

@Nuoji我正在使用nonblocikng-io,是的,我正在使用选择器,至于当我写信给频道时,我会执行以下操作:

由于我在帖子第二段中写的内容是正确的,因此我假设频道在大多数情况下都已准备好写入,因此我首先没有将兴趣集设置在要写入的键上,而是尝试写入直接频道。但是,如果我无法将所有内容写入频道(或任何内容),我将兴趣集设置在要写入的键上(这样下次我尝试写入频道时,它已准备好写)。尽管在我的测试中我得到了原始帖子中提到的结果,但这种情况很少发生。

是的,我可以给你代码示例,虽然我真的不想打扰任何人。您特别希望看到哪些部分,选择器线程或写入线程?

于 2011-02-14T13:36:54.133 回答