`
mk926
  • 浏览: 10493 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

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 one inputAll on Serializable inputAll on ExternalizableLite
1k 1672 735 406
10k 7281 1735 1547
100k 47765 14688 13610

 

表二,2个TC节点

Time(ms)      
  3488 703 485
  24281 6703 6609
  215406 68843 66125

 

表三,4个TC节点

       
  3781 641 453
  27187 6719 5828
  223680 5828 54875

 

表四,8个TC节点

       
  4078 672 469
  32969 6609 6407
  248719 61672 58984

 

结果分析

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)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics