我想从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日志中强调输出以指示时间
来源包括在内。
我希望它有助于理解和解决问题。
答案 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之间的公共类可以使它更快