我们正在使用实例为我们面临的关键任务Internet应用程序添加一个缓存层。对Memorystore实例的调用总数(包括get、set和密钥过期操作)约为每秒10-15K。CPU利用率一直保持在75%-80%左右,并且预期使用率会更高。
目前,我们在标准服务层下使用M4容量层。
https://cloud.google.com/memorystore/docs/redis/pricing
以下指点需要一些清晰的说明。
我们的应用程序是CPU密集型的,我们看不到任何方法进一步优化我们的应用程序。期待一些有帮助的参考资料。
发布于 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.我们预期会出现任何明显的性能问题吗?
这确实很难说或预测,因为它取决于几个因素(客户端服务、在一个时间范围内运行的命令、工作负载)。造成高延迟和性能问题的一些最常见的原因是:
4.-解决更高的CPU利用率(>=100%)所造成的性能问题(如果有的话)的选项有哪些?
这个问题主要围绕您的实现的缩放设计。由于redis是单线程的,降低CPU %的更好方法是在多个redis实例中对数据进行切分,并在其前面有一个代理来分配负载。请查看Twemproxy
部分下的链接图表。
5.-切换到M5容量层会解决高CPU消耗和相应的问题吗?
切换到更高的容量层应该可以暂时缓解延迟,但这被称为垂直扩展,它仅限于Cloud提供的层。
发布于 2022-07-08 15:20:53
Redis Enterprise解决了您所面临的所有问题。Redis Enterprise可以在集群配置中配置,并利用机器的所有资源,以及在多台机器上扩展。
负责监视CPU利用率和其他资源管理任务,因此您不需要这样做。它也在GCP和GCP市场上提供。
https://stackoverflow.com/questions/66534066
复制相似问题