netease-im / camellia

Camellia provide easy-to-use server toolkits, such as: redis proxy、delay queue、id gen、hot key and more
MIT License
620 stars 142 forks source link

RedisMonitor中upstream的耗时会存在比commandSpend还大的可能吗 #36

Closed zhaoxiaojie0415 closed 2 years ago

zhaoxiaojie0415 commented 2 years ago

日志如下

2022-06-16 14:55:44.958 [INFO] [camellia-schedule-1-8] [camellia.redis.proxy.stats] @@@traceId=N/A@@@ ====spend.stats==== 2022-06-16 14:55:44.958 [INFO] [camellia-schedule-1-8] [camellia.redis.proxy.stats] @@@traceId=N/A@@@ command=auth,count=2,avgSpendMs=0.005009,maxSpendMs=0 .005018 2022-06-16 14:55:44.958 [INFO] [camellia-schedule-1-8] [camellia.redis.proxy.stats] @@@traceId=N/A@@@ command=publish,count=2,avgSpendMs=1.170809,maxSpendM s=1.174107 2022-06-16 14:55:44.958 [INFO] [camellia-schedule-1-8] [camellia.redis.proxy.stats] @@@traceId=N/A@@@ command=get,count=4,avgSpendMs=1.05341025,maxSpendMs= 1.065794 2022-06-16 14:55:44.958 [INFO] [camellia-schedule-1-8] [camellia.redis.proxy.stats] @@@traceId=N/A@@@ command=exists,count=4,avgSpendMs=1.12897225,maxSpend Ms=1.164166 2022-06-16 14:55:44.958 [INFO] [camellia-schedule-1-8] [camellia.redis.proxy.stats] @@@traceId=N/A@@@ command=brpop,count=3,avgSpendMs=1265.753878,maxSpend Ms=1598.487612

2022-06-16 14:55:44.958 [INFO] [camellia-schedule-1-8] [camellia.redis.proxy.stats] @@@traceId=N/A@@@ ====upstream.redis.spend.stats==== 2022-06-16 14:55:44.958 [INFO] [camellia-schedule-1-8] [camellia.redis.proxy.stats] @@@traceId=N/A@@@ addr=3LO_4kt9@10.9.62.139:6379,count=15,avgSpendMs=4398.119012933334,maxSpendMs=46122.952246

caojiajun commented 2 years ago

因为有pubsub这样的阻塞型命令(比如subscribe之后,会有N个reply,相当于1个请求N个响应,不再是1:1的关系了),upstream耗时统计上是可能有一些问题,可以看看怎么fix一下统计数据的这个问题

caojiajun commented 2 years ago

1.0.59已经修复了这个问题,可以关注新版本的release

zhaoxiaojie0415 commented 2 years ago

好的

zhaoxiaojie0415 commented 2 years ago

1.0.59已经修复了这个问题,可以关注新版本的release

在整体耗时CommandSpendMonitor统计中是不是也要过滤下阻塞性的命令?

另外camellia-redis-proxy-nacos-spring-boot-starter module 中貌似没有引nacos-api这个包。

zhaoxiaojie0415 commented 2 years ago
image
caojiajun commented 2 years ago
image

这个是分命令去统计的,所以目前就也参与统计了,不会影响整体

caojiajun commented 2 years ago

1.0.59已经修复了这个问题,可以关注新版本的release

在整体耗时CommandSpendMonitor统计中是不是也要过滤下阻塞性的命令?

另外camellia-redis-proxy-nacos-spring-boot-starter module 中貌似没有引nacos-api这个包。

引入了nacos-client-2.0.3这个包

zhaoxiaojie0415 commented 2 years ago

ok,明白了, 多谢哈。我在打算把stats的日志集成到prometheus,发现有些监控项不太好加工。不过我看camellia规划后面也是要支持这个了。

nacos-client中依赖nacos-api时设置的optional=true,没有传递出来。

caojiajun commented 2 years ago

1、这个后面要加的,但是可能没这么快(人力有限),你可以基于http-api去暴露给promethus而不是日志,这样会更简单一些,可以参考:https://github.com/netease-im/camellia/blob/master/docs/redis-proxy/monitor-data.md

2、这个可以加一下,你要不提一个PR过来?

zhaoxiaojie0415 commented 2 years ago

1、这个后面要加的,但是可能没这么快(人力有限),你可以基于http-api去暴露给promethus而不是日志,这样会更简单一些,可以参考:https://github.com/netease-im/camellia/blob/master/docs/redis-proxy/monitor-data.md

2、这个可以加一下,你要不提一个PR过来?

好的

caojiajun commented 2 years ago

nacos这边你是除了作为配置中心管理camellia-redis-proxy.properties之外,还想做注册中心之类的功能吗

zhaoxiaojie0415 commented 2 years ago

nacos这边你是除了作为配置中心管理camellia-redis-proxy.properties之外,还想做注册中心之类的功能吗

嗯,是的,我们这边用nacos做服务注册发现,所以接入了nacos

caojiajun commented 2 years ago

nacos这边你是除了作为配置中心管理camellia-redis-proxy.properties之外,还想做注册中心之类的功能吗

嗯,是的,我们这边用nacos做服务注册发现,所以接入了nacos

调用方是用RedisProxyJedisPool吗,替换其中的IProxyDiscovery部分

zhaoxiaojie0415 commented 2 years ago

nacos这边你是除了作为配置中心管理camellia-redis-proxy.properties之外,还想做注册中心之类的功能吗

嗯,是的,我们这边用nacos做服务注册发现,所以接入了nacos

调用方是用RedisProxyJedisPool吗,替换其中的IProxyDiscovery部分

是类似的实现。因为原来公司内部已有一套redis的sdk,所以直接在上面做了nacos的发现。