当我删除使用 go 客户端连接到 Redis 的服务的核心时,我的服务与 Redis 之间的延迟会增加。在 Redis 中,对于每个额外的核心,我们默认添加 10 个连接。这意味着,如果我们移除核心,连接数量也会减少。 在这种情况下,我的服务向 Redis 发出请求的延迟会急剧增加吗? Redis 和我的服务都驻留在 aws 中。
我将4核改为1核,发送了2个请求。一个请求的延迟变为 60 毫秒,而 4 核时为 2 毫秒。对于两个核心,一个请求的延迟为 20ms。
有没有可能和epoll有关?
管理连接是有成本的。
Redis 库默认值基于
GOMAXPROCS
,使其通常可以根据您的资源进行扩展和缩减。但它并不完美——没有图书馆能够准确地猜测你的程序的工作量。
如果您发现减少可用核心时连接池已饱和,请手动配置行为以适合您的程序。该库不会通过同一连接复用请求,因此池中的请求越少意味着等待连接可用的时间就越长。
设置在这里:https://pkg.go.dev/github.com/go-redis/redis/v8#Options
如果不分析您的应用程序,我们将无法推荐理想的配置,但请看一下...
如果您想更准确,请收集程序的 CPU 和跟踪配置文件以确定什么是有意义的。