首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >云内存Redis高CPU利用率

云内存Redis高CPU利用率
EN

Stack Overflow用户
提问于 2021-03-08 17:04:38
回答 2查看 2K关注 0票数 3

我们正在使用实例为我们面临的关键任务Internet应用程序添加一个缓存层。对Memorystore实例的调用总数(包括get、set和密钥过期操作)约为每秒10-15K。CPU利用率一直保持在75%-80%左右,并且预期使用率会更高。

目前,我们在标准服务层下使用M4容量层。

https://cloud.google.com/memorystore/docs/redis/pricing

以下指点需要一些清晰的说明。

  1. M4容量层对应多少个CPU核心?
  2. 超过100%的CPU使用率真的令人震惊吗?我们期望有任何明显的性能问题吗?
  3. 有哪些选项可以解决高CPU利用率(>=100%)导致的性能问题(如果有的话)?将切换到M5容量层解决了高CPU消耗和相应的问题。

我们的应用程序是CPU密集型的,我们看不到任何方法进一步优化我们的应用程序。期待一些有帮助的参考资料。

EN

回答 2

Stack Overflow用户

发布于 2021-03-26 19:01:42

回答你的问题。

1. M4容量层对应多少个CPU核?

云内存是一种由Google管理的服务,这意味着Google可以保留运行Redis服务的虚拟机的内部细节(资源)。尽管如此,预计容量层越高,虚拟机就会拥有更多的资源(CPU)。特别是对于您的情况,添加CPU不会解决有关CPU使用的问题,因为redis服务本身就是单螺纹

正如您从前面的链接中看到的那样:

要最大限度地利用CPU,可以启动Redis的多个实例。 如果您想要使用多个CPU,您可以开始考虑一些更早的分解方法。

2.超过100%的CPU利用率真的令人震惊吗?

是的,CPU利用率高是令人担忧的,因为它会导致连接错误或高延迟。CPU利用率是很重要的,但是Redis实例是否有足够的效率来维持给定延迟的吞吐量也是很重要的。您可以使用命令redis-cli --latency检查redis延迟,而CPU %很高。

3.我们预期会出现任何明显的性能问题吗?

这确实很难说或预测,因为它取决于几个因素(客户端服务、在一个时间范围内运行的命令、工作负载)。造成高延迟和性能问题的一些最常见的原因是:

  • 客户端VM或服务被重载,并且不消耗来自redis 的消息:当客户端打开到redis的TCP连接时,redis服务器将有一个消息缓冲区发送到该连接。如果客户端服务的CPU耗尽,没有时间让内核从redis接收消息,那么它们就会在redis服务器上填满。
  • 执行的命令消耗了大量的CPU:众所周知,处理以下命令可能非常昂贵: EVAL/EVALSHA 钥匙 朗格 ZRANGE/ZREVRANGE

4.-解决更高的CPU利用率(>=100%)所造成的性能问题(如果有的话)的选项有哪些?

这个问题主要围绕您的实现的缩放设计。由于redis是单线程的,降低CPU %的更好方法是在多个redis实例中对数据进行切分,并在其前面有一个代理来分配负载。请查看Twemproxy部分下的链接图表。

5.-切换到M5容量层会解决高CPU消耗和相应的问题吗?

切换到更高的容量层应该可以暂时缓解延迟,但这被称为垂直扩展,它仅限于Cloud提供的层。

票数 4
EN

Stack Overflow用户

发布于 2022-07-08 15:20:53

Redis Enterprise解决了您所面临的所有问题。Redis Enterprise可以在集群配置中配置,并利用机器的所有资源,以及在多台机器上扩展。

负责监视CPU利用率和其他资源管理任务,因此您不需要这样做。它也在GCP和GCP市场上提供。

https://redis.com/redis-enterprise-cloud/pricing/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66534066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档