首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在5个节点的黑兹尔广播集群中放置200万个对象--我们应该做什么优化

在5个节点的黑兹尔广播集群中放置200万个对象--我们应该做什么优化
EN

Stack Overflow用户
提问于 2017-08-14 17:59:53
回答 2查看 512关注 0票数 0

我们有来自REST的200万个对象,每个API调用中有500个对象块(总计750 MB的数据)。

  • 当我们将这些对象放入Hazelcast缓存中时,大约需要10分钟--是5-6% --这是有意义的,因为有200万次阻塞n/w调用。 vertx.executeBlocking {(200万次){ hazelcast.put(mapName,key,value) }}
  • 如果我们不使用vertx的“可执行阻塞”,而是按下面的方式执行,则整个过程在10-15秒内完成,但CPU达到80%的。我正在使用Hazelcast mancenter,所以我可以看到所有的200万个对象都在10-15秒内被反射到缓存中。 (2百万次){ hazelcast.putAsync(mapName,key,value) }
  • 当我们使用#putAll时,CPU达到60%,这比第二种方法更好。这个方法也在10秒内完成。 { hazelcast.putAll(mapName,集合-500-对象)}}

有你们推荐的优化吗?我想知道为什么黑兹尔卡斯特会给CPU增加这么多。

FYI -认为vertx.executeBlocking是异步执行一段代码。我们正在使用英特尔Xeon 8核心CPU与12 We。

EN

回答 2

Stack Overflow用户

发布于 2017-08-14 19:05:09

看看IMap.putAll。它允许将数据放入块中。你说200万除以500个对象= 4k块

代码语言:javascript
复制
/**
 * {@inheritDoc}
 * <p>
 *      No atomicity guarantees are given. It could be that in case of failure
 *      some of the key/value-pairs get written, while others are not.
 * </p>
 * <p>
 *      <p><b>Warning:</b></p>
 *      If you have previously set a TTL for the key, the TTL remains unchanged and the entry will
 *      expire when the initial TTL has elapsed.
 * </p>
 */
void putAll(Map<? extends K, ? extends V> m);
票数 0
EN

Stack Overflow用户

发布于 2017-08-17 12:33:54

有你们推荐的优化吗?

您可以尝试使用IMap.setAsync而不是IMap.putAsync,根据文档,它应该更有效:

类似于put操作,但set不返回旧值,这样效率更高。

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

https://stackoverflow.com/questions/45680328

复制
相关文章

相似问题

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