Coherence的一些简单加载实验
实验一,测试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 ExternalizableLite1k167273540610k728117351547100k477651468813610
表二,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)
页:
[1]