对比测试constcache和memcached



本文对比测试constcache和memcached。评测程序参考memslap实现。

评测程序使用介绍

命令参数:

bench.php -ttype -cconcurrency -mmethod -sserver -nnumber -llength -aamend -i

-r

参数说明:

type。评测类型,目前支持constcache、memcached。

concurrency。并发数量,默认值10,上限999。

method。评测哪种操作,目前支持get、set。

server。对memcached来说要指定连接参数,格式为ip:port。

number。操作数量,默认10000,上限1000000。

length。记录长度,默认1000。

amend。等待修正值。为保证并发同步执行,进程需要等待到同一时刻执行。amend能

调整等待时间,设得大就等待时间长。默认3,上限20。

i。在测试get时,要加上i参数用来加载数据。

r。在测试memcached时,加上r参数可以屏蔽数据压缩功能。默认开启。

测试环境说明:

基于内存限制,操作数据*并发数量设置上限1000000。测试时请设置memcached和

constcache的内存参数超过2G。

由于constcache是本机操作,因此memcached也应该针对本机。

constcache有hashpower参数可以设置,默认16。下文中constcache括号里的值就是指

这个参数。

测试程序说明:

key长度全部是100,key名全部不一样。

value长度随参数设置,同一次测试中所有key的value都一样。

命令举例:

# 评测memcached,连接本机的12323端口,写入10000条,并发10

bench.php -tmemcached -s127.0.0.1:12321 -n10000 -c10

# 评测constcache,读取20000条,每条长度2048,并发3,读取前写加载数据

bench.php -tconstcache -mget -n20000 -c3 -l2048 -i

评测结论

从下面的评测数据,分析如下:

constcache(20)与无压缩的memcached相比,写入性能相差不大,占用内存略小。

constcache(20)与有压缩的memcached相比,在高并发情况下写入性能高出30%以上。

constcache(20)与constcache(16)相比,在高并发情况下写入性能高出30%以上,占用内

存没有明显增加。

constcache与memcached相比,读取性能有几十倍提高,并发越多性能越高。

constcache(16)在高并发情况下,读取性能急剧下降。

从而得出结论:

constcache在高并发情况下,与memcached相比,写入性能提升30%以上,读取性能提

升80倍以上。

constcache的hashpower参数默认应设为20。

因测试程序忽略了连接因素,实际应用环境下性能更高。

评测数据

数据长度1KB,次数10000,写入性能对比

bench.php -tconstcache -n10000 -l1024

bench.php -tmemcached -s127.0.0.1:12321 -n10000 -l1024

bench.php -tmemcached -s127.0.0.1:12321 -n10000 -l1024 -r

并发
constcache(16)
constcache(20)
memcached(有压缩)
memcached(无压缩)


耗时(s)
内存(M)
耗时(s)
内存(M)
耗时(s)
内存(M)
耗时(s)
内存(M)

1
0.034
11.6
0.036
19.1
0.781
3.36
0.281
16.7

2
0.446
22.7
0.784
30.2
1.602
5.42
1.037
31

5
3.107
56
2.969
63.5
4.288
11.6
3.792
74.1

10
13.281
111.51
13.372
119
12.2
21.4
12.735
147.3

20
58.049
222.52
53.299
230
57.759
40.9
55.931
292.9

50
412.924
555.54
343.852
563
497.539
99.6
324.268
729.2

100
2370.85
1110.6
1463.31
1118
2457.78
198.5
1506.05
1457.5

注:因value都一样,有压缩memcached的压缩效果很好,导致占用内存很少。

数据长度1KB,次数10000,读取性能对比

bench.php -tconstcache -n10000 -l1024 -mget -i

bench.php -tmemcached -s127.0.0.1:12321 -n10000 -l1024 -mget -i

bench.php -tmemcached -s127.0.0.1:12321 -n10000 -l1024 -mget -i -r

并发
constcache(16)
constcache(20)
memcached(有压缩)
memcached(无压缩)


耗时(s)
内存(M)
耗时(s)
内存(M)
耗时(s)
内存(M)
耗时(s)
内存(M)

1
0.022

0.025

0.582

0.593


2
0.056

0.059

1.537

1.022


5
0.189

0.183

2.73

2.909


10
0.71

0.681

8.366

7.94


20
1.623

1.184

26.211

35.711


50
7.066

2.98

232.114

243.525


100
102.543

9.265

1115.04

1098.32


数据长度1KB,次数1000000,读取性能对比

bench.php -tconstcache -n1000000 -l1024 -mget -i

bench.php -tmemcached -s127.0.0.1:12321 -n1000000 -l1024 -mget -i

bench.php -tmemcached -s127.0.0.1:12321 -n1000000 -l1024 -mget -i -r

并发
constcache(16)
constcache(20)
memcached(有压缩)
memcached(无压缩)


耗时(s)
内存(M)
耗时(s)
内存(M)
耗时(s)
内存(M)
耗时(s)
内存(M)

1
5.196

2.396

47.3

44.573


猜你喜欢

转载自erntoo.iteye.com/blog/1340932