tythg 发表于 2014-3-24 14:15:49

Redis性能测试

1. 测试一:单线程客户端基于不同Key和Value长度1.1. 测试内容
[*]不变量:
[*]JedisPool 参数确定
[*]minIdle = 0
[*]maxIdle = 50
[*]maxActive = 500

[*]测试 hset 操作
[*]Field 长度为 32 bytes

[*]控制变量:
[*]Key 长度;
[*]Value 长度;

[*]测试内容:
[*]吞吐量(每秒访问次数)

1.2. 测试结果Key 长度从 1 到 256 逐次 2 倍递增, Value 长度从 8 到 32768 逐次 4 倍递增。
[*]以 Key 长度为 X 轴绘制测试结果:

[*]以 Value 长度为 X 轴绘制测试结果:
1.3. 结论Throughput 随 Key 长度变化不大(更大范围内的 Key 长度没有测试,因为一般情况下 Key 超过 256 字节的情况较少,请本人使用方式也符合该范围),但与 Value 长度相关性极大(范围较大,因本人的应用场景中 Value 值较大)。1.4. 建议
[*]减少每个查询中的访问次数(优化查询,类似于 Database 中优化 SQL 语句);
[*]要尽可能的减小 Value。
测试二:单线程客户端基于不同连接池参数2.1. 测试内容
[*]不变量:
[*]测试 hset 操作
[*]Key 长度为 32 bytes
[*]Field 长度为 32 bytes
[*]Value 长度为 256 bytes

[*]控制变量
[*]maxIdle
[*]maxActive

[*]测试内容
[*]吞吐量(每秒访问次数)

2.2. 测试结果maxActive 从 25 到 300 每次递增 25, maxIdle 从 50 到 450 每次递增 100。
[*]以 maxActive 长度为 X 轴绘制测试结果:

[*]以 maxIdle 长度为 X 轴绘制测试结果:
2.3. 结论在目前的测试参数范围内,差别不大,或许需要进一步测试。从该测试结果看 maxIdle=25 且 maxActive=250 的 JedisPool 设置能够带来最大的 hset(32bits, 32bits, 256bits) 吞吐量。2.4. 建议
[*]采用 maxIdle=25 且 maxActive=250 的 JedisPool 设置。
测试三:多线程客户端不同hset次数3.1. 测试内容
[*]不变量:
[*]测试 hset 操作
[*]Key 长度为 32 bytes
[*]Field 长度为 32 btyes
[*]Value 长度为 20480 bytes

[*]控制变量
[*]hset 操作次数从 10000 到 1000000

[*]测试内容
[*]吞吐量(每秒访问次数)

2.3. 测试结果hset 操作次数从 10000 到 5120 5002.4. 结论与建议
[*]用多线程的客户端进行压力测试;
[*]Redis 的并发性能相当不错,2KB 的数据每秒可以写入 60000 多次,平均每秒 120 MB,960 Mb,约 1Gb。
[*]如果测试小数据,应该能达到 100,000/s 以上的并发量
-
页: [1]
查看完整版本: Redis性能测试