我刚接触网络并询问一个简单的问题,这让我很困惑。我希望有很多网络知识的人可以提供帮助。位于一台机器上或两台机器上的两个进程的Java nio套接字通信
我始终将消息从进程A发送到进程B.如果A和B位于同一台机器上,则平均端到端延迟为〜6毫秒;如果A和B位于本地网络中的两台机器上(由非常简单的路由器连接),则平均端到端延迟为〜176 ms。进程A和进程B使用java非阻塞套接字进行通信。每条消息都是10 KB,一条消息的消息副本将发送给不同的接收方。
另一个测试是改变消息副本的数量。在此测试中,有三个进程(A,B和C),其中进程A发送给进程B,进程B发送给进程C.如果发送一个消息副本,End2End延迟约为10毫秒;如果连续发送两个消息副本(20 KB),则end2end延迟为147 ms;如果逐个发送四个消息副本(40 KB),则end2end延迟为〜800 ms。 每1000毫秒发送一条新消息。
消息副本之间没有延迟。当要发送的邮件副本数量增加时,为什么成本增长如此之快?这与我的网络配置或我的编码问题有关吗?造成这种差异的原因是什么?代码
部分是在此链接:How to let selector that socketchannel key change in java nio
在开始的时候,我觉得它是缓慢的监守TCP缓冲区已满,该过程必须等待当有新的空间来写。在某些参考中,tcp的等待时间可能是200 ms。这对我的问题是否正确以及如何验证?
这将有助于,如果你可以发布一些代码。 – r0ast3d
这听起来像代码是不完全正确的,所以它表现不如它可能。 –
我的代码发布在http://stackoverflow.com/questions/8107828/how-to-let-selector-that-socketchannel-key-change-in-java-nio。它可以工作,但表现不好。 – susan