Memcached客户端性能评测报告

转载:http://wenku.baidu.com/view/38a195c02cc58bd63186bdcb  ;

 

Memcached客户端性能评测报告

1.      Memcached客户端简介

本次memcached客户端评测以JAVA开源客户项目为评测对象,分别选择Memcached-Java-Client、spymemcached、xmemcached、alisoft xplatform asf cache四个项目,其中分别由两个产品基于堵塞式IO和NOI实现的客户端、两个国内开源项目或两个国外开源项目。

选择的客户端简介如下:

Memcached-Java-Client

Memcached-Java-Client是官方提供的基于传统阻塞io客户端。官方网址为http://www.whalin.com/memcached/

alisoft xplatform asf cache

alisoft xplatform asf cache是阿里开源的memcached集群的客户端,它是基于Memcached-Java-Client的衍生版本。配置简单,使用也简单,有很详细的中文文档。官方网址为http://code.google.com/p/memcache-client-forjava/

spymemcached

spymemcached是基于Java NOI、单线程、异步处理的高性能memcached客户端,spymemcached对数据的操作采用异步处理方式,对于相同的缓存数据查询操作可以自动进行归并,避免多次服务器请求。spymemcached官网网址为:http://code.google.com/p/spymemcached/

xmemcached

Xmemcached是基于Java NOI、线程安全、同步处理的高性能memcached客户端,支持memcached所有的二进制协议(从1.2.0开始)和文本协议,并且支持对Kestrel(一个scala写的MQ)的兼容访问。官方网址为http://code.google.com/p/xmemcached/,基本入门指南见http://code.google.com/p/xmemcached/wiki/User_Guide_zh

2.      测试场景说明

2.1.  测试环境说明

测试机环境

CPU:双核2.53G

MEM:2G

OS:Linux Ubuntu 11.10 3.0.0-16-generic

Memcached

Memcached版本为1.4.13。

JDK

JDK版本为1.7。

客户端

所有客户端均采用最新版本,具体版本如下:

u Memcached-Java-Client 2.6.3

u Spymemcached 2.8.0

u Xmemcached 1.3.5

u alisoft xplatform asf cache 2.5.1

2.2.  测试用例

Memcached在测试机启动两个服务端口11211和11212。客户端同时连接两个memcached服务。

性能测试采用三种不同的测试用例。

用例1:随机生成100个32位长度的字符串,使用UUID作为key值,分别进行数据写入、数据读取、数据删除操作。

用例2:随机生成长度为50的HashMap对象(约4k数据量),使用UUID作为key值,分别进行数据写入、数据读取、数据删除操作。

用例3:在100并发线程下,对数据进行新增、获取、删除操作,数据的字节数从64Byte依次累加到51200字节(500k),具体测试数据包括,64、128、256、512、1024、2048、5120、10240、20480、51200、102400、204800、512000。

针对两个测试用例,使用nanobench进行压力测试,使用不同的线程数共进行1000次请求(针对Memcached-Java-Client客户端在实际测试过程中,如使用1000次请求,系统出现too many open files错误,最后降低为500次请求)。

3.      测试结果分析

3.1.  写入性能分析

数据写入性能分析情况如下:

技术分享 

简单对象写入TPS分析

技术分享 

复杂对象写入TPS分析

技术分享 

简单对象写入内存占用分析

技术分享 

复杂对象写入内存占用分析

       在较高并发情况下,xmemcached性能优于Spymemcached,在低并发情况下,Spymemcached略优于xmemcached。

在数据写入方面,总体性能排名如下:xmemcachedàspymemcachedà alisoft xplatform asf cacheàMemcached-Java-Client;内存占用方面:xmemcachedàMemcached-Java-Client à alisoft xplatform asf cacheàspymemcached。

3.2.  读取性能分析

数据读取性能分析情况如下:

 技术分享

简单对象读取TPS分析

技术分享 

复杂对象读取TPS分析

技术分享 

简单对象读取内存占用分析

技术分享 

复杂对象读取内存占用分析

在数据读取方面,总体性能排名如下:xmemcachedàspymemcachedàMemcached-Java-Client à alisoft xplatform asf cache;在内存占用方面: xmemcachedàspymemcachedà Memcached-Java-Client à alisoft xplatform asf cache。

3.3.  删除性能分析

数据输出性能分析情况如下:

技术分享 

简单对象删除TPS分析

 

技术分享 

复杂对象删除TPS分析

技术分享 

简单对象删除内存占用分析

技术分享 

复杂对象删除内存占用分析

在数据删除方面,总体性能排名如下:spymemcachedàxmemcachedà alisoft xplatform asf cache à Memcached-Java-Client;在内存占用方面: xmemcachedàspymemcachedà Memcached-Java-Client à alisoft xplatform asf cache。

备注:从数据上来看在较低线程数的情况下,spymemcached性能明显优于xmemcached,在高负载的情况下,spymemcached性能略优于xmemcached,但spymemcached由于采用异步调用模式(即删除指令发出后,数据并没有被真正删除,后台采用异步提交的方式进行处理),实际数据删除操作并没有处理完成。

3.4.  数据长度变化性能分析

在测试过程中,考虑alisoft xplatform asf cache、Memcached-Java-Client表现性能差强人意,不在对数据长度变化进行测试。调整测试内容为:spymemcached、xmemcached分别在二进制和ASCII协议下的性能变化情况。

 技术分享

数据长度变化TPS影响分析

技术分享 

数据长度变化内存占用影响分析

       实际测试结果显示,Xmemcached在整体性能上略占优势。在传输协议的对比结果上有些出乎意料,二进制协议并没有表现出优势,在大多数情况下,ASCII协议具备更好的性能。

对于缓存的数据内容上,数据的长度在10k以内具备较好的性能,对于超过50k的数据,不建议在memcached中进行存储。(结合DB2的4k、8k、16k、32k表空间,如不处理lob字段,数据均在可承受范围之内)

3.5.  总体评价

依据上述测试结果,基于堵塞式IO的memcached客户端alisoft xplatform asf cache和Memcached-Java-Client 在性能上与基于NIO的客户端xmemcached、spymemcached存在较大的差距,基于堵塞式IO的memcached客户端在测试过程中均不定期出现“打开文件数过多”的错误,需要占用更多网络读写资源。

xmemcached除在删除方面性能与spymemcached有一定的差距外,在数据写入、数据读取方面两者没有明显的差距。但在内存控制上,xmemcached具备较明显的优势(在测试过程中,spymemcached在对复杂对象操作过程中出现OOM的错误,有调整JVM的PermSize和内存进行解决);xmemcached本身是基于spymemcached改进而来,几乎具备spymemcached的功能。因此建议在系统应用中选用xmemcached作为memcached客户端。

4.      附录

4.1.  详细测试数据

简单对象压力测试结果

操作

线程数

SpyMemcached

Xmemcached

jmc

asf

TPS

MEM

TPS

MEM

TPS

MEM

TPS

MEM

写(set)

10

510.51

88102

310.97

5258

120.25

59633

136.08

6020

20

478.6

81439

344.12

4917

106.97

53436

121.61

13328

50

540.68

114517

388.45

9360

101.16

51011

116.76

3139

100

462.62

82393

458.75

17255

99.87

55550

100.87

11762

200

631.51

102839

590.35

11751

89.42

18940

97.19

91386

300

519.25

81165

637.52

13310

93.65

105222

135.91

78627

400

541.38

65699

724.8

25330

95.48

91411

115.31

242422

500

619.05

148441

948.45

26502

94.37

46319

96.63

45344

读(get)

10

210

21539

364.7

6724

242.15

131399

141.4

15082

20

256.77

74909

453.64

3483

190.03

132258

137.42

7285

50

360.22

45428

522.57

8901

139.78

29540

142.23

12445

100

489.43

76244

540.31

21706

115.72

17710

149.68

16728

200

600.58

47630

686.78

8022

135.21

89817

129.89

44619

300

748.08

63623

916.77

11510

154.5

119221

136.83

47124

400

1068.16

51982

1081.32

55875

182.78

130141

105.33

148399

500

1252.92

67872

1210.39

55683

211.66

113543

94.25

156141

删除(delete)

10

1920

60949

452.55

3302

257.21

44434

327.27

5213

20

2014.29

64557

512.64

6456

226.46

42114

287.08

8106

50

1532.33

79291

604.34

9010

231.84

49590

280.05

3536

100

1784

126154

618.21

7675

201.95

39735

229.65

38890

200

1557.98

50025

781.64

82647

242.11

35557

234.2

122619

300

1675.35

125495

835.51

7265

325.72

59770

262.08

100943

400

1202.99

36298

899.95

23311

256.35

66451

241.43

191719

500

1261.06

56263

1075.2

23440

161.15

63833

146.83

197955

大对象压力测试结果

操作

线程数

SpyMemcached

Xmemcached

jmc

asf

TPS

MEM

TPS

MEM

TPS

MEM

TPS

MEM

写(set)

10

259.24

467583

222.18

255304

144.48

20764

162.02

246856

20

235.75

497143

235.54

15381

133.58

85895

154.8

26305

50

237.82

482584

276.87

91160

142.85

74635

140.88

257407

100

232.69

442517

291.82

103691

118.41

15813

137.34

77771

200

232.1

391364

335.66

17936

132.09

79607

152.05

243591

300

250.66

392310

404.91

63163

141.37

79068

152.17

174972

400

259.27

342082

486.08

96368

120.97

97293

143.89

189039

500

246.1

273606

449.88

155568

131.08

78614

150.08

25611

读(get)

10

178.64

174495

224.47

249417

171.26

32600

160.03

246387

20

183.59

140674

245.79

167597

161.99

160280

138.22

253770

50

226.32

12239

256

87253

152.9

145711

80.36

255730

100

261.46

82222

300.66

43833

157.5

159957

69.26

75928

200

346.15

105795

307.76

52438

164.14

147615

147.08

91865

300

349.61

53670

383.89

80387

182.28

147911

124.45

93083

400

430.09

28327

496.69

77513

177.31

145364

148.15

127157

500

572.84

53478

487.23

94533

180.33

148534

151.33

145180

删除(delete)

10

3174.86

64150

827.66

47583

506.36

98913

663.43

223488

20

3004.99

66000

923.66

60185

470.39

115510

667.98

228045

50

4450.18

63606

950.02

54976

345

104234

542.52

230123

100

3904.91

60183

862.95

67825

426.18

110897

498.82

247312

200

3175.47

65761

1094.5

63657

374.3

112631

531.68

238339

300

2046.76

71115

1289.17

59543

500.16

92836

526.47

242203

400

1897.26

75532

1399.28

50389

418.81

107433

519.47

243653

500

2071.35

67690

1159.58

48333

497.9

149904

513.8

243406

字节数变化压力测试结果

字节数

SpyMemcached-bin

SpyMemcached-txt

Xmemcached-bin

Xmemcached-txt

TPS

MEM

TPS

MEM

TPS

MEM

TPS

MEM

64

2917.58

5108

2810.18

13032

3262.03

8945

4199.25

9171

128

4292.9

12312

2895.1

14109

4531.3

10094

4133.94

10406

256

3592.17

14588

3196.91

16812

3038.37

11091

6550.86

11841

512

3233.89

5017

4160.2

21820

7860.32

13821

7131.74

14266

1024

7361.02

30589

2470.53

8164

5109.72

17938

5703.03

3614

2048

3233.6

46527

7798.11

51387

7222.36

29494

8547.69

28575

5120

3358.58

43874

5514.08

108159

5406.71

26134

6850.01

57482

10240

4440.62

84220

4117.94

23733

4584.6

37675

5092.56

110802

20480

660.46

151707

778.49

139424

755.55

17418

850.55

136711

51200

274.85

136410

271.22

118354

289.41

113544

285.84

112371

102400

118.4

80257

123.24

123402

138.35

96368

139.74

155225

204800

57.59

168415

58.11

125883

64.68

140794

64.86

164982

512000

20.91

323064

21.76

378767

24

226116

24.78

113326

TPS:每秒通过率

MEM:内存占用情况(单位K)

jmcMemcached-Java-Client

asfalisoft xplatform asf cache

4.2.  第三方评测结果

n  Memcached-Java-Client官方评测报告

https://github.com/gwhalin/Memcached-Java-Client/wiki/PERFORMANCE

n  XMemcached官方评测报告

http://xmemcached.googlecode.com/svn/trunk/benchmark/benchmark.html

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。