mai*_*rgs 9 java performance terracotta map java-ee
我在大约一个月前发现它后才学会如何使用兵马俑.这是一项非常酷的技术.
基本上我要做的是:
我的根(记录系统)是ConcurrentHashMap.
主要的Instrumented类是一个"JavaBean",我希望在HashMap中存在30个左右的字段.
Hashmap中将存在大约20000个这样的JavaBeans.
每个bean都有(至少)5个字段,每5秒更新一次.
(我之所以使用Terracotta,是因为需要跨JVM和节点访问这些JavaBeans.)
有TC经验的人有没有提示?表现是关键.
其他类似应用的任何例子?
您可能会发现在一个锁定范围下批量处理多个更改会更好.每个同步的块/方法形成一个写事务(假设您使用写锁),必须将其发送到服务器(并可能返回到其他节点).通过更改一堆字段(可能在一个锁定下的一堆对象上),可以减少创建事务的开销.至少可以玩的东西.
分区也是提高性能的关键方法.只需将更改发送到实际使用对象的节点.因此,如果您可以对哪些节点通常触摸特定对象进行分区,从而减少必须在群集周围发送的更改数量,从而提高性能.
unnutz关于使用CHM或CSM的建议很好.CHM允许更大的并发性(因为每个内部段可以同时锁定和使用) - 确保也尝试更大的段计数.CSM每个条目实际上有一个锁,因此在N大小的表中实际上有N个分区.这可以大大减少锁争用(以管理更多内部锁对象为代价).CSM即将发生的变化将使锁定管理成本大大降低.
通常我们发现一个好的策略是:
随时可以在Terracotta论坛上询问- 所有工程,现场工程,产品管理都会在那里观看并回答.
| 归档时间: |
|
| 查看次数: |
2536 次 |
| 最近记录: |