首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terracotta性能和提示

Terracotta性能和提示
EN

Stack Overflow用户
提问于 2009-04-25 15:33:22
回答 2查看 2.6K关注 0票数 9

在大约一个月前发现Terracotta之后,我才开始学习如何使用它。这是一项非常酷的技术。

基本上,我想要做的是:

我的根(记录系统)是一个ConcurrentHashMap。

主插装类是我希望存在于HashMap中的具有30个左右字段的"JavaBean“。

大约有20000个这样的JavaBeans存在于Hashmap中。

每个bean (至少)有5个字段,每5秒更新一次。

(我使用Terracotta的原因是因为这些JavaBeans需要跨JVM和节点访问。)

有比我更有经验的TC的人有什么建议吗?性能是关键。

还有其他类似应用的例子吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-04-25 18:57:47

您可能会发现,在一个锁范围内批处理多个更改的性能会更好。每个同步的块/方法形成一个写事务(假设您使用写锁),该事务必须发送到服务器(也可能返回到其他节点)。通过更改一组字段,可能是在一个锁下的一组对象上,您可以减少创建事务的开销。至少可以玩玩的东西。

分区也是提高性能的关键方法。更改只需要发送到实际使用对象的节点。因此,如果您可以划分哪些节点经常接触特定对象,从而减少必须在集群中发送的更改数量,从而提高性能。

unnutz关于使用CHM或CSM的建议是很好的。CHM允许更大的并发性(因为每个内部段都可以被锁定并并发使用)-请确保也尝试更大的段计数。CSM实际上每个条目有一个锁,因此在一个N大小的表中实际上有N个分区。这可以极大地减少锁争用(以管理更多内部锁对象为代价)。即将到来的CSM更改将使锁管理成本大大降低。

一般来说,我们发现一个好的策略是:

  1. 构建一个性能测试(应该是多线程和多节点的,并且类似于你的应用程序(或你的实际应用程序!)
  2. Tune objects --在开发控制台中查看你的集群对象图,找到根本不需要集群的对象--有时这是偶然发生的(用一个瞬态字段移除或切断集群)。有时,您可能会在long可以执行的情况下对日期进行聚类。很小的改动,但这是每个映射条目的一个对象,这可能会使difference.
  3. Tune锁-使用开发控制台中的锁分析器来查找热锁或太窄或太宽的锁。集群统计数据记录器也可以帮助查看事务大小。
  4. 调整GC和DGC -调整JVM垃圾收集,然后通过打开更改年轻一代GC的频率来调整Terracotta分布式gc。
  5. 调整TC服务器-在这里进行大量非常详细的调整,但通常在调整上面的内容之前不值得这样做。

请随时在Terracotta forums上提问-所有工程、现场工程、产品管理都可以观看这些内容并在那里回答。

票数 7
EN

Stack Overflow用户

发布于 2009-04-25 16:33:35

首先,我建议你也在他们的论坛上提出这个问题。

其次,实际上,在Terracotta上集群的应用程序的性能将取决于发生的写事务的数量。所以你可以考虑使用ConcurrentStringMap (如果你的键是字符串)或者ConcurrentHashMap。请注意,从性能的角度来看,CSM比CHM要好得多。

毕竟,POJO是懒惰加载的。这意味着每个属性都是按需加载的。

希望这能有所帮助。

干杯

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/789147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档