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

Hazelcast分布式映射堆大小控制

竺捷
2023-03-14

我在我的API(如MemTable)中使用Hazelcast作为嵌入式分布式映射,在将其发送到另一个存储之前积累条目。我的问题是:

我可以使用为IMap提供的LocalMapStats对象控制堆大小吗?

我正在阅读关于该对象的信息,我认为getHeapSize()或getOwnedEntryMemoryCost()加上getBackupEntryMemoryCost()等方法可能会给我提供内存成本,以便与阈值进行比较,然后决定如何处理数据。

提前感谢。

共有1个答案

仉宪
2023-03-14

您可以通过API识别Map的堆成本。这也可以通过Hazelcast管理中心门户中的脚本控制台轻松完成。代码如下

function findOverallDataSizeImap() {
var objs = hazelcast.getDistributedObjects();
var len = objs.length;
var output='';
var totalSizeInMB=0.0;
for(var i=0;i<len;i++){
if(objs[i] instanceof com.hazelcast.core.IMap){
output = output+' Name : '+objs[i].getName() +' Size (MB) :'+
(objs[i].getLocalMapStats().getHeapCost()/100000)+' \n';
totalSizeInMB=totalSizeInMB+(objs[i].getLocalMapStats().getHeapCost()/100000);
}
}
output = output + ' Total Size (MB) = ' + totalSizeInMB;
return output;
}
 类似资料:
  • 下面是我们在生产中遇到的问题的描述。请注意,我无法在测试或本地环境中再现该问题,因此无法向您提供测试代码。 我们有一个hazelcast集群,有两个成员M1、M2和三个客户端C1、C2、C3。Hazelcast版本为3.9。 客户端使用IMap。tryLock()方法,超时10秒。获得锁后,将执行关键和长时间运行的操作,最后使用IMap释放锁。unlock()方法。 生产中出现的问题如下: 在某个

  • 假设一个组织有两个数据中心(为简单起见命名为“A”和“B”),每个数据中心运行多个节点,并且所有这些节点上都有一个Hazelcast集群。假设此集群中有一个分布式地图,其配置为备份计数为1。 是否有办法配置Hazelcast分布式地图,以便将数据中心a中的节点备份到数据中心B中的节点上,反之亦然?这意味着如果丢失单个数据中心,地图数据(和备份)不会丢失?

  • 几个月前我们开始使用Hazelcast。我们最近开始在生产环境中测试它,现在大约每周看到一次这个异常: 2020-02-11 12:10:00,084upport.invokeNoDataMemberInClusterException:无法找到调用的目标!分区所有者为空,但无法分配分区,因为集群中的所有节点都是精简成员。upport.java:467upport.java:406com.haze

  • 我正在尝试测试我的分布式锁实现,但是我仍然没有找到使它工作的方法。我用两个简单的方法部署了一个REST服务,如下所示: distributedService对象实现getDistributedLock()方法: 在黑兹尔卡斯特。xml文件,我启用了TCP-IP连接,并禁用了其他所有功能: 我在这两台机器上部署了应用程序,IP地址与。xml文件(192.168.0.01和192.168.0.02),

  • 根据这个答案,我尝试编写代码: pojo: 内部控制器: 网状物xml配置: 过滤器: 在debug中,我看到filter方法调用,但我无法实现case-insentive-get-parameters映射。 例如可以工作,但是-不

  • 我正在尝试构建一个方法,删除具有非空属性的条目,但我一直在谓词中失败,我不知道如何正确实现谓词,因为hazelcast没有将“Not NULL”或“IS NULL”作为where子句任何想法如何在映射中找到我需要搜索以删除它们的值? 方法 主类响应SerializablePlus