当前位置: 首页 > 知识库问答 >
问题:

在Hazelcast 3.9.1中初始化群集分区表排列…耗时太长

严繁
2023-03-14

我正在尝试创建一个Hazelcast服务项目,在该项目中,我将订阅一个RDBMS(Oracle DB12C)数据存储,使用反射动态创建一个POJO/Java Bean,然后解析该Java Bean对象,将JDBC ResultSet作为结果行值映射到Java Bean对象中,并将这些映射对象加载到分布式映射中。

我检查了试图加载到Hazelcast IMap中的两个表的数据量,发现它们的数据量低至0.0625和0.0316MB。因此,这是一个更简单的Hazelcast实现,只需初始化localhost上的两个并行实例/节点。

我在Java Main方法中计算了从创建Java POJO类到创建每个相应对象并加载到Hazelcast IMAP的时刻开始的总运行时间。

在我的理解中,从系统的角度来看,这花费了太长的时间,因为即使是在系统规格比下面给出的要好3到4倍的测试和生产框中,我们也会看到类似的行为。好心的帮助提供建议,什么是错误的,或者这是通常的第一次在hazelcast IMDG中进行分区,在一个集群中有2个节点。

系统规格如下:

Macbook Pro 2014处理器:2.6 GHz英特尔酷睿i5内存:8 GB 1600 MHz DDR3

请找到原木...

2018年2月26日10:30:39 AM com.hazelcast.internal.partition.impl.partitionStateManager信息:[xx.xxx.xx.xxx]:5702[dev][3.9.1]正在初始化群集分区表排列...userMaster映射中的条目数:883

userMaster映射中的条目数:7499

持续时间约为:92520毫秒2018年2月26日10:32:10 AM com.hazelcast.core.lifecycleservice信息:[xx.xxx.xxx]:5701[dev][3.9.1][xx.xxx.xx.xxx]:5701正在关闭

共有1个答案

廉雅惠
2023-03-14

虽然我无法修复MapLoader问题,但ResultSetsetFetchSize()的主要问题。这被设置为10,这导致网络I/O太高。一旦我增加到1000或更多,就会变得更快。

日志:

常规FetchSize():PreparedStatement.GetFetchSize():10 Feb 28,2018 7:24:51 PM com.hazelcast.internal.partition.impl.partitionStateManager信息:[xx.xxx.xx.xx]:5702[dev][3.9.1]正在初始化群集分区表排列...

userMaster映射中的条目数:26464

持续时间约为:276178毫秒

使用更大的FetchSize():

 类似资料:
  • 我试图创建一个Hazelcast服务项目,其中我将订阅一个RDBMS(Oracle DB 12c)数据存储,使用反射动态创建一个POJO/JavaBean,然后解析JavaBean对象以映射JDBC ResultSet作为结果行值放入JavaBean对象,并将这些映射对象加载到分布式映射中。 我检查了两个表的数据量,我试图从这两个表加载在Hazelcast IMap中,它低至0.0625和0.03

  • 我很担心,因为我在启动Hazelcast实例后会得到以下跟踪日志: 使用最新版本的Hazelcast 3.7进行测试,但使用3.6进行测试,并在多播环境中使用默认的Hazelcast配置 到底是什么意思?这是有问题的征兆? 谢谢你

  • 考虑如下代码: vector<double> v = { 1, 2, 3.456, 99.99 }; list<pair<string,string>> languages = { {"Nygaard","Simula"}, {"Richards","BCPL"}, {"Ritchie","C"} }; map<vector<string>,vector<int>> years = {

  • 我正在研究Lettuce集群Java客户端。它是在拓扑(Apache Strom)中设置的。正在从读取数据并将其传递给。然而,当我启动我的拓扑时,我会收到以下错误消息和程序终止。我是不是漏掉了什么?这是什么原因造成的? 29502[Thread-17-RecommendationLetTuceBolt-Executor[2 2]]错误O.A.S.Util-异步循环已死亡!io.lettuce.co

  • 本文介绍如何对 Kubernetes 上的集群进行初始化配置完成初始化账号和密码设置,以及批量自动执行 SQL 语句对数据库进行初始化。 注意: 如果 TiDB 集群创建完以后手动修改过 root 用户的密码,初始化会失败。 以下功能只在 TiDB 集群创建后第一次执行起作用,执行完以后再修改不会生效。 配置 TidbInitializer 请参考 TidbInitializer 示例和 API

  • 问题内容: 我打算初始化一个长度为n的列表列表。 但是,这以某种方式将列表链接在一起。 我希望有这样的东西: 有任何想法吗? 问题答案: 问题在于它们在内存中都是完全相同的列表。当使用语法时,得到的是n许多x对象的列表,但是它们都是对同一对象的引用。它们不是不同的实例,而是n对同一实例的引用。 要列出3个不同的列表,请执行以下操作: 这为你提供了3个单独的实例,这是你想要的 类似于 虽然类似于: