需求背景
- 新旧redis拆分,新redis功能、性能验证
- 通过redis实现信息同步,修改了同步逻辑,在redis高压情况下,同步性能是否受影响
实现命令行对redis压测
- 并发,请求量
- 业务接口压测,消耗redis性能
其实第一反应是请求redis的接口,对其进行压测,因为比较数据http压测。现实的问题是,压测量级上去了,测试环境部署的redis也是集群,都有哨兵机制,对redis的消耗上不去。
实现持久化
- 特殊命令
redis-benchmark -h 127.0.0.1 -p 6379 -l -c 100 -n 10000
- 扩充命令含义:
- 压测生效截图:
- 脚本循环执行
import subprocess
def test_redis():
args = "redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 10000"
for i in range(10000):
i = i + 1
if i >= 10000:
p = subprocess.Popen(args=args, shell=True, stdout=subprocess.PIPE)
for line in iter(p.stdout.readline, 'b'):
if line is not None or line.strip() != '':
print(line)
def main():
test_redis()
if __name__ == '__main__':
main()
- 解决问题思路
- 如何开启持久化
- 如何打印命令行结果
- 如何关注指标
校验压测生效,机器性能
-
命令行Top观察
-
运维对机器有监控
这个版本的redis支持多核,我压测过程中发现redis-benchmark占的CPU核跑满了,现在用3台机器压,ops能到14万,redis-server进程跑满6个core
- 关注业务功能
redis高压情况下,读写操作数据库生效,更新redis设置生效。 - 扩展redis命令:
学习地址:http://redisdoc.com