使用TomEE 1.6.0部署时,hazelcast 3.2速度很慢

时间:2014-03-30 08:18:25

标签: hazelcast tomee

我想从TomEE 1.5.1升级到TomEE 1.6.0 我有一些在服务器启动期间填充的淡褐色地图 当部署在TomEE 1.5.1上时,工作速度很快(不到一秒钟就可以填充和索引2k项目,包括两者之间的一些处理)。
将完全相同的WAR部署到TomEE 1.6.0时,相同的任务需要约4秒。

要完成图片,当使用指向openejb 4.6.0的openejb.home运行unit-test时,它运行得非常好。

有什么想法吗?

===== edit =====
我意识到这有点悬而未决 这是一个简单战争的链接,可以将50000个项目放到地图上 https://drive.google.com/file/d/0B3Xw6Xt1YU4bVy16NE9Xc295LTA/edit?usp=sharing

我在apache-tomee-plus-1.5.1和apache-tomee-jaxrs-1.6.0中部署了它。时间约为2.5秒和约10秒。 在tomee日志中强调输出以指示时间 来源包括在内。
我希望它有助于理解和解决问题。

4 个答案:

答案 0 :(得分:1)

基本上你被困在了榛树:

at com.hazelcast.spi.impl.BasicInvocation$InvocationFuture.waitForResponse(BasicInvocation.java:721)
    - locked <0x00000007c58b50c0> (a com.hazelcast.spi.impl.BasicInvocation$InvocationFuture)
    at com.hazelcast.spi.impl.BasicInvocation$InvocationFuture.get(BasicInvocation.java:695)
    at com.hazelcast.spi.impl.BasicInvocation$InvocationFuture.get(BasicInvocation.java:674)
    at com.hazelcast.map.proxy.MapProxySupport.invokeOperation(MapProxySupport.java:239)
    at com.hazelcast.map.proxy.MapProxySupport.putInternal(MapProxySupport.java:200)
    at com.hazelcast.map.proxy.MapProxyImpl.put(MapProxyImpl.java:71)
    at com.hazelcast.map.proxy.MapProxyImpl.put(MapProxyImpl.java:57)

您可以在两个实例中进行一些线程堆栈进行比较,但是TomEE没有足够的变化来证明这种差异。

您使用完全相同的网络配置吗?

答案 1 :(得分:0)

我也没有得到任何例外。刚开始查看tomee是否为bottlenexk时,刚刚获得了一个线程转储。由于时间花在了hazelcast上,TomEE不应该是它的原因所以你需要比较两个实例。

答案 2 :(得分:0)

通过编辑hazelcast序列化的对象解决了这个问题 对于TomEE 1.5.1,这些对象实现了java.io.Serializable接口,并且出现了性能差异 我将其更改为com.hazelcast.nio.serialization.DataSerializable,运行速度更快,并且两台服务器都保持一致 所以,虽然我的问题已经解决,但我仍然不了解行为差异。

答案 3 :(得分:0)

它可以是类加载差异,默认情况下,从webapp容忍更多的类。使用openejb.classloader.forced-skip = package1,package2,...来排除webapp和tomee / lib之间的公共类可以使它更快