我已经构建了一个Java自定义消息服务器,它接收消息流并将每条消息传递给其客户端(1:1,如果未连接,则非常简单,即丢弃消息)。我在Win7x64 & Java 7上运行Tomcat 7,并使用NIO连接器(实现了Comet servlet)。 它工作的很好,但我现在正在研究缩放这头野兽,目前正在为每个连接的客户端分配大约85kb的RAM。 10.000客户端@ 900MB以下,线性缩放。 (我没有做其他任何事情,但仍然保持连接)这对我的意见非常重要,所以我想知道是否有一些调整让Tomcat或Java使用NIO impl保存更多的内存。到目前为止我尝试过的所有Tomcat设置都没有影响到这一点。尽量减少Tomcat“每个连接”的内存占用量
有没有人有经验如何将Java或Tomcat放在有关套接字连接的内存节食上?
更新: 我现在通过修剪套接字缓冲区和一些其他的tomcat内部在70kb /连接下。不知道这如何影响吞吐量。我也在32位/ 64位Linux上尝试过,结果相同。
您是如何测量每个客户端85kb的? – dash1e 2012-04-13 07:31:23
我做了一个小负载测试并连接了10.000个客户端。在服务器代码中,我在每100个客户端之后完成一个System.gc(),然后将Runtime.totalMemory() - Runtime.freeMemory()打印到控制台。 – Daniel 2012-04-13 17:29:24
嗨。你能分享你最好的Tomcat/JVM设置吗?另外,您是否使用NIO连接器? 10倍 – JRun 2014-05-09 11:30:51