背景:2022-2-10日客户端cpu负载上升, codis proxy 主机的负载也跟随着上升
测试工具:memtier_benchmark
redis压测工具: https://github.com/RedisLabs/memtier_benchmark/archive/refs/heads/master.zipredis压测工具:
1. 单proxy测试 (长连接)同网段
proxy 配置 (max cpu32、maxclient 100000 、offheap maxmemory 1024mb)
安装教程:使用memtier_benchmark工具进行性能测试_分布式缓存服务 DCS_性能白皮书_测试方法_华为云
参数说明:
-n:操作数
-d: 测试使用的数据大小 单位 byte
-c:模拟客户端的数量
-t:线程数量(默认不指定为4c)
2. 单proxy测试 (长连接)同网段
proxy 配置 (max cpu32、maxclient 100000 、offheap maxmemory 1024mb)
连接数 | 命令 | qps | client |
---|---|---|---|
500 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 64 -c 125 | 18W左右 | 1 |
1000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 64 -c 250 | 22W+ | 1 |
2000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 64 -c 500 | 20W+ | 1 |
6000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 64 -c 1500 | 16W+ | 1 |
8000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 64 -c 2000 | 14W ~16W | 1 |
10000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 64 -c 2500 | 12W+ | 1 |
20000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 64 -c 5000 | 4W | 1 |
40000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 64 -c 10000 | 2W~3W | 1 |
40000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 64 -c 1000 -t 4 | 14.5 | 10 |
结论:以长链接的方式测试单个proxy,连接数在1000 - 2000 proxy性能最高,连接数太低并发量低qps低
codis-proxy 分发请求流量到codis-server 长链接
codis-server 主从之间互相同步数据 长链接
3. 多proxy测试 (长连接)同网段
现象:两台client 服务器启动四个进程,每个进程启动两个线程。分别去访问四个proxy,结果发现proxy的qps只能达到4W-5W左右。测试访问单台proxy,起一个进程可达到
知识点:codis-proxy 会定时的去发送ping包,检查codis server是否是存活的
测试方式: 8台client 同时建立8个进程去访问8个proxy
说明: 10 个测试client去访问 8个proxy 每个测试client 开启3个进程 模拟133个客户端同时去访问proxy
连接数 | 命令 | qps | proxy | client |
---|---|---|---|---|
500 | memtier_benchmark -s $element -p 19000 -n 200000 -d 64 -c 21 -t 3 | 20W*8 | 8 | 8 |
1000 | memtier_benchmark -s $element -p 19000 -n 200000 -d 64 -c 42 -t 3 | 20W*8 | 8 | 8 |
2000 | memtier_benchmark -s $element -p 19000 -n 200000 -d 64 -c 84 -t 3 | 21W*8 | 8 | 8 |
4000 | memtier_benchmark -s $element -p 19000 -n 200000 -d 64 -c 133 -t 3 | 18W*8 | 8 | 10 |
6000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 200 -c 1500 | 17W+*8 | 8 | 8 |
8000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 267 -c 2000 | 15.5W*8 | 8 | 8 |
10000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 334 -c 2500 | 15.5W*8 | 8 | 8 |
20000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 667 -c 5000 | 14.75W*8 | 8 | 8 |
40000 | memtier_benchmark -s 10.138.20.97 -p 19000 -n 10000000 -d 64 -c 10000 | 14W*8 | 8 | 8 |
总结:使用多台测试机每台机器启动8个测试脚本分别去访问8个proxy,连接数低于4000的情况下,单个proxy的qps最大可以达到每个20W左右,当连接数达到40000的情况 proxy qps保持在14W左右。