Go 中的 Redis 客户端与池连接大小之间的关系会影响延迟

问题描述 投票:0回答:1

当我删除使用 go 客户端连接到 Redis 的服务的核心时,我的服务与 Redis 之间的延迟会增加。在 Redis 中,对于每个额外的核心,我们默认添加 10 个连接。这意味着,如果我们移除核心,连接数量也会减少。 在这种情况下,我的服务向 Redis 发出请求的延迟会急剧增加吗? Redis 和我的服务都驻留在 aws 中。

我将4核改为1核,发送了2个请求。一个请求的延迟变为 60 毫秒,而 4 核时为 2 毫秒。对于两个核心,一个请求的延迟为 20ms。

有没有可能和epoll有关?

go redis go-redis
1个回答
0
投票

管理连接是有成本的。

Redis 库默认值基于

GOMAXPROCS
,使其通常可以根据您的资源进行扩展和缩减。但它并不完美——没有图书馆能够准确地猜测你的程序的工作量。

如果您发现减少可用核心时连接池已饱和,请手动配置行为以适合您的程序。该库不会通过同一连接复用请求,因此池中的请求越少意味着等待连接可用的时间就越长。

设置在这里:https://pkg.go.dev/github.com/go-redis/redis/v8#Options

如果不分析您的应用程序,我们将无法推荐理想的配置,但请看一下...

  • 最小空闲连接数
  • 最大空闲连接数
  • 泳池尺寸

如果您想更准确,请收集程序的 CPU 和跟踪配置文件以确定什么是有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.