【发布时间】:2011-06-09 18:34:57
【问题描述】:
我正在运行一些性能测试,以确定响应时间和处理各种 cpu / ram / os 配置并发的能力。我遇到的一个有趣的发现是,看起来单个 jvm 使用 4 核的性能比使用 2 核的性能更好(这并不奇怪),但是在第 4 核之外添加更多的内核并不会带来任何显着的改进.但随后,添加另一个带有负载均衡器(相同硬件)的 jvm 实例带来了显着的改进。
看起来一个单独的进程在它可以使用的内核数量上是有限的,这可能是由于一个进程一次可以产生的操作系统线程数的限制。这是 64 位环境。
我正在使用 tomcat 并尝试更改“maxThreads”属性,但这对我希望处理的并发量没有影响。
还有什么其他原因可以解释吗?
【问题讨论】:
-
“取决于什么在利用货币以及如何利用”? (或者是否有更根深蒂固的问题,比如只能在 4 个内核上生成线程?一些亲和力?)
-
您使用的是哪个 JVM?似乎不太可能对可能使用的内核数量进行限制。
-
也许你会绑定到其他东西,而不是纯 CPU,例如一个数据库池。或者 tomcat 用户会话。
-
我使用的是 Sun HotSpot 1.6.25,为了测试,我只有应用程序逻辑,没有 i/o,数据库连接等。
标签: performance memory-management jvm