Coherence的一些简单加载实验

通过对比不同数量节点及插入方式下的Coherence性能,发现批量插入显著提升效率,且节点数变化对性能影响不大;同时测试了内存占用情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验一,测试Coherence(简称TC)加载对象的速度

1,设计一个大约2K的数据对象

分为两种形式,一种为普通实现Serializable接口,一种实现ExternalizableLite接口,存取数据用TC帮助类ExternalizeableHelper存取数据

2.客户端向TC中插入数据

分三种用例

A 插入1k量的对象

B 10K

C 100K

两种情况

一个对象一个对象插入

一批一批对象插入,每批对象为10K

3.TC节点为1,2,4,8

 

表一,一个TC节点

Time(ms)insert one by oneinputAll on SerializableinputAll on ExternalizableLite
1k1672735406
10k728117351547
100k477651468813610

 

表二,2个TC节点

Time(ms)   
 3488703485
 2428167036609
 2154066884366125

 

表三,4个TC节点

    
 3781641453
 2718767195828
 223680582854875

 

表四,8个TC节点

    
 4078672469
 3296966096407
 2487196167258984

 

结果分析

1.数据加载速度与节点数目不是很有关系,显示优良的Scalability

2.inputAll比一个一个input有非常大的提高,但相对来说ExternalizeLite对性能提高不如前者明显(或者ExternalizableHelper用了某种压缩算法正好对我这样的数据优化不明显?)

3.在我目前的环境里加载的速度计算大约为

一个一个插入为0.8M/S

inputAll(10K)为2.98M/S

(附,这其中包含了产生数据的时间,测试中产生数据只是在JVM中new一个对象,考虑占用时间不多,同时去除比较困难)

 

实验二,内存占用实验

我的TC是配置用Distributed,使用缺省Local-Scheme

我的数据对象大约是2k,如果插入500K个则需要大约1G内存,Distributed缺省是一个backup,那么就需要2G内存

我每个JVM设置的heap size是512M,那么4个节点就是2G,考虑到TC本身的程序数据要求的占用内存那么可以计算出大概4个到5个节点可以接纳下500K个数据对象

在实际实验中4个节点在加载过程中产生OutOfMemory错误,节点失效

如果是5个节点可以顺利完成加载时间大约300秒(10K inputAll,使用ExternalizableLite)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值