redis之性能压测
简介
redis命令的执行逻辑是单线程的,因为redis是内存数据库,数据的读写速度非常块,性能的瓶颈一般不会出现在CPU,而是网卡。单线程的模式也就不需要用锁来保护资源的读写。
测试分析
测试案例
# 关闭rdb
save ""
# 开启rdb, 压测的时候会触发第3条,60秒内有10000次写
save 3600 1
save 300 100
save 60 10000
# 关闭aof测试
appendonly no
# 开启aof测试,这里使用everysec, 保证最多只丢1秒的数据
appendonly yes
appendfsync everysec
单节点set,get测试
[root@xxx src]# ./redis-benchmark -h 192.168.1.2 -p 36379 -r 1000000 -n 100000 -t set,get
====== SET ======
100000 requests completed in 1.30 seconds
50 parallel clients
3 bytes payload
keep alive: 1
host configuration "save":
host configuration "appendonly": no
multi-thread: no
Latency by percentile distribution:
0.000% <= 0.151 milliseconds (cumulative count 1)
50.000% <= 0.719 milliseconds (cumulative count 50895)
75.000% <= 0.807 milliseconds (cumulative count 76218)
87.500% <= 0.879 milliseconds (cumulative count 88166)
93.750% <= 0.951 milliseconds (cumulative count 93821)
96.875% <= 1.015 milliseconds (cumulative count 96881)
98.438% <= 1.095 milliseconds (cumulative count 98525)
99.219% <= 1.191 milliseconds (cumulative count 99254)
99.609% <= 1.319 milliseconds (cumulative count 99624)
99.805% <= 1.623 milliseconds (cumulative count 99807)
99.902% <= 2.295 milliseconds (cumulative count 99906)
99.951% <= 2.447 milliseconds (cumulative count 99952)
99.976% <= 2.535 milliseconds (cumulative count 99977)
99.988% <= 2.591 milliseconds (cumulative count 99990)
99.994% <= 2.615 milliseconds (cumulative count 99994)
99.997% <= 2.655 milliseconds (cumulative count 99998)
99.998% <= 2.671 milliseconds (cumulative count 99999)
99.999% <= 2.751 milliseconds (cumulative count 100000)
100.000% <= 2.751 milliseconds (cumulative count 100000)
Cumulative distribution of latencies:
0.000% <= 0.103 milliseconds (cumulative count 0)
0.579% <= 0.207 milliseconds (cumulative count 579)
11.175% <= 0.303 milliseconds (cumulative count 11175)
27.369% <= 0.407 milliseconds (cumulative count 27369)
38.535% <= 0.503 milliseconds (cumulative count 38535)
44.975% <= 0.607 milliseconds (cumulative count 44975)
48.707% <= 0.703 milliseconds (cumulative count 48707)
76.218% <= 0.807 milliseconds (cumulative count 76218)
90.228% <= 0.903 milliseconds (cumulative count 90228)
96.610% <= 1.007 milliseconds (cumulative count 96610)
98.615% <= 1.103 milliseconds (cumulative count 98615)
99.322% <= 1.207 milliseconds (cumulative count 99322)
99.600% <= 1.303 milliseconds (cumulative count 99600)
99.726% <= 1.407 milliseconds (cumulative count 99726)
99.777% <= 1.503 milliseconds (cumulative count 99777)
99.800% <= 1.607 milliseconds (cumulative count 99800)
99.813% <= 1.703 milliseconds (cumulative count 99813)
99.816% <= 1.807 milliseconds (cumulative count 99816)
99.818% <= 2.007 milliseconds (cumulative count 99818)
99.826% <= 2.103 milliseconds (cumulative count 99826)
100.000% <= 3.103 milliseconds (cumulative count 100000)
Summary:
throughput summary: 76745.97 requests per second
latency summary (msec):
avg min p50 p95 p99 max
0.626 0.144 0.719 0.975 1.151 2.751
====== GET ======
100000 requests completed in 0.83 seconds
50 parallel clients
3 bytes payload
keep alive: 1
host configuration "save":
host configuration "appendonly": no
multi-thread: no
Latency by percentile distribution:
0.000% <= 0.111 milliseconds (cumulative count 3)
50.000% <= 0.311 milliseconds (cumulative count 52078)
75.000% <= 0.399 milliseconds (cumulative count 75914)
87.500% <= 0.479 milliseconds (cumulative count 87876)
93.750% <= 0.559 milliseconds (cumulative count 94078)
96.875% <= 0.647 milliseconds (cumulative count 96992)
98.438% <= 0.799 milliseconds (cumulative count 98460)
99.219% <= 1.167 milliseconds (cumulative count 99230)
99.609% <= 1.399 milliseconds (cumulative count 99611)
99.805% <= 2.351 milliseconds (cumulative count 99806)
99.902% <= 3.367 milliseconds (cumulative count 99904)
99.951% <= 3.767 milliseconds (cumulative count 99952)
99.976% <= 4.023 milliseconds (cumulative count 99978)
99.988% <= 4.119 milliseconds (cumulative count 99988)
99.994% <= 4.159 milliseconds (cumulative count 99994)
99.997% <= 4.199 milliseconds (cumulative count 99997)
99.998% <= 4.223 milliseconds (cumulative count 99999)
99.999% <= 4.239 milliseconds (cumulative count 100000)
100.000% <= 4.239 milliseconds (cumulative count 100000)
Cumulative distribution of latencies:
0.000% <= 0.103 milliseconds (cumulative count 0)
3.917% <= 0.207 milliseconds (cumulative count 3917)
48.990% <= 0.303 milliseconds (cumulative count 48990)
77.390% <= 0.407 milliseconds (cumulative count 77390)
90.295% <= 0.503 milliseconds (cumulative count 90295)
96.035% <= 0.607 milliseconds (cumulative count 96035)
97.845% <= 0.703 milliseconds (cumulative count 97845)
98.489% <= 0.807 milliseconds (cumulative count 98489)
98.742% <= 0.903 milliseconds (cumulative count 98742)
98.911% <= 1.007 milliseconds (cumulative count 98911)
99.100% <= 1.103 milliseconds (cumulative count 99100)
99.325% <= 1.207 milliseconds (cumulative count 99325)
99.488% <= 1.303 milliseconds (cumulative count 99488)
99.616% <= 1.407 milliseconds (cumulative count 99616)
99.646% <= 1.503 milliseconds (cumulative count 99646)
99.677% <= 1.607 milliseconds (cumulative count 99677)
99.702% <= 1.703 milliseconds (cumulative count 99702)
99.710% <= 1.807 milliseconds (cumulative count 99710)
99.720% <= 1.903 milliseconds (cumulative count 99720)
99.734% <= 2.007 milliseconds (cumulative count 99734)
99.752% <= 2.103 milliseconds (cumulative count 99752)
99.871% <= 3.103 milliseconds (cumulative count 99871)
99.986% <= 4.103 milliseconds (cumulative count 99986)
100.000% <= 5.103 milliseconds (cumulative count 100000)
Summary:
throughput summary: 119760.48 requests per second
latency summary (msec):
avg min p50 p95 p99 max
0.351 0.104 0.311 0.583 1.055 4.239
- 单个set和get命令的执行平均时间不到0.6ms,换了多个配置的机器,相差也不大。
- 对比多个测试结果来看(这里没附上测试结果),开启rdb或者aof对性能影响可以忽略;
- 理论上分析,rdb只有在创建子进程时的fork系统调用可能对主进程的性能带来一点影响;(猜测)如果进程的页表很大,fork的时候拷贝页表可能会比较耗时;
- 之所以建议关闭huge page应该是因为COW的时候触发huge page的拷贝,会影响性能。
网络流量监控
sar -n DEV --iface=bond0 1
09:25:20 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
09:25:21 AM bond0 81796.00 81796.00 8866.01 5671.75 0.00 0.00 9.00 0.36
09:25:21 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
09:25:22 AM bond0 82449.00 82435.00 8937.02 5716.08 0.00 0.00 7.00 0.37
09:25:22 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
09:25:23 AM bond0 81876.00 81886.00 8874.91 5678.04 0.00 0.00 8.00 0.36
中断监控


浙公网安备 33010602011771号