如何加快java.net.ServerSocket和java.net.Socket的效率?

时间:2010-12-24 04:54:20

标签: java sockets performance

我想知道每秒请求中java.net.ServerSocket和java.net.Socket的限制是什么。我写了一些简单的测试代码(多线程),并在我的机器上发现每秒约1200个请求的限制(在双核处理器,64位linux和32位窗口上测试)。

是否有解决方案让java每秒增加几千比例? JVM的开销是大到几千的比例吗?

我想提一下,我认识到java使用本机代码来处理这部分代码,测试依赖于操作系统(配置和实现)。

2 个答案:

答案 0 :(得分:4)

如果不查看代码,很难说。

一方面,您的应用程序可能正在做的事情会使网络I / O(实际上所有I / O)变慢。例如,一次读取或写入一个字节的无缓冲流/读取器。也有可能正在进行大量的线程切换。或许您应该使用NIO来获得更好的吞吐量。

另一方面,缓慢可能是由于高网络延迟,低网络带宽或拥塞......或者OS网络堆栈不是特别好。

或者它可能是别的东西。

答案 1 :(得分:2)

过循环回来你应该能够达到每秒高达50K的请求(假设请求是微不足道的)我建议你试试看看你的机器是什么。正如@Stephen C所暗示的那样,其他因素,例如请求的作用和网络特征将会产生更大的差异。