我想知道每秒请求中java.net.ServerSocket和java.net.Socket的限制是什么。我写了一些简单的测试代码(多线程),并在我的机器上发现每秒约1200个请求的限制(在双核处理器,64位linux和32位窗口上测试)。
是否有解决方案让java每秒增加几千比例? JVM的开销是大到几千的比例吗?
我想提一下,我认识到java使用本机代码来处理这部分代码,测试依赖于操作系统(配置和实现)。
答案 0 :(得分:4)
如果不查看代码,很难说。
一方面,您的应用程序可能正在做的事情会使网络I / O(实际上所有I / O)变慢。例如,一次读取或写入一个字节的无缓冲流/读取器。也有可能正在进行大量的线程切换。或许您应该使用NIO来获得更好的吞吐量。
另一方面,缓慢可能是由于高网络延迟,低网络带宽或拥塞......或者OS网络堆栈不是特别好。
或者它可能是别的东西。
答案 1 :(得分:2)
过循环回来你应该能够达到每秒高达50K的请求(假设请求是微不足道的)我建议你试试看看你的机器是什么。正如@Stephen C所暗示的那样,其他因素,例如请求的作用和网络特征将会产生更大的差异。