Open KouenSoftWare opened 5 years ago
背景介绍下, 我这边有两个Codis集群,一个是生产的负载高(30W/QPS),一个测试的负载低(2W/QPS)。 最近随着内存使用的上升,业务能明显察觉的Get/Set等指令的延迟上升(从原来2.x上升到3.x,4.x,5.x都有)。因为我的业务是对相应非常敏感的,响应时间上升一倍就意味着spark流处理的业务就很容易堵住。
在生产的集群里面,我观察到一个现象,所有的Redis的Slowlog里面或多或少都出现了‘Command’这条指令,而且这条指令的耗时在10ms~50ms之间波动,最近100条中大概占据50%~70%。
在测试集群里面,负载很低,redis的slowlog里面也没有'Command',而测试集群的命令响应平均都是2.x左右。
因为这个,我就大胆推测了目前生产集群的延迟问题就是因为大量出现'Command'指令导致的。
业务是通过java-jedis连接Codis的,我在jedis中没有看到使用Command命令的方法 在Codis的代码中,有看到OpFlag中,字典中有这个命令,但是本身好像没有看到会发送这个命令到后端的redis中。
我现在的疑问就是,这个command指令到底是从哪里来的?
针对这个问题,在进行一些补充:
按道理,同一个Group内数据一致,那么get和set的耗时应该也差不多才对。 我使用redis-cli --latancy测试延迟都是0.09~0.11
背景介绍下, 我这边有两个Codis集群,一个是生产的负载高(30W/QPS),一个测试的负载低(2W/QPS)。 最近随着内存使用的上升,业务能明显察觉的Get/Set等指令的延迟上升(从原来2.x上升到3.x,4.x,5.x都有)。因为我的业务是对相应非常敏感的,响应时间上升一倍就意味着spark流处理的业务就很容易堵住。
在生产的集群里面,我观察到一个现象,所有的Redis的Slowlog里面或多或少都出现了‘Command’这条指令,而且这条指令的耗时在10ms~50ms之间波动,最近100条中大概占据50%~70%。
在测试集群里面,负载很低,redis的slowlog里面也没有'Command',而测试集群的命令响应平均都是2.x左右。
因为这个,我就大胆推测了目前生产集群的延迟问题就是因为大量出现'Command'指令导致的。
业务是通过java-jedis连接Codis的,我在jedis中没有看到使用Command命令的方法 在Codis的代码中,有看到OpFlag中,字典中有这个命令,但是本身好像没有看到会发送这个命令到后端的redis中。
我现在的疑问就是,这个command指令到底是从哪里来的?