Google cloud platform 云内存存储Redis CPU利用率高
我们正在使用Cloud Memorystore Redis实例为我们面向互联网的关键应用程序添加一个缓存层。对Memorystore实例的调用总数(包括get、set和key expiration操作)约为每秒10-15K。CPU利用率一直保持在75-80%左右,预计利用率还会更高 目前,我们在标准服务层下使用M4容量层 需要澄清以下几点Google cloud platform 云内存存储Redis CPU利用率高,google-cloud-platform,redis,google-cloud-memorystore,Google Cloud Platform,Redis,Google Cloud Memorystore,我们正在使用Cloud Memorystore Redis实例为我们面向互联网的关键应用程序添加一个缓存层。对Memorystore实例的调用总数(包括get、set和key expiration操作)约为每秒10-15K。CPU利用率一直保持在75-80%左右,预计利用率还会更高 目前,我们在标准服务层下使用M4容量层 需要澄清以下几点 M4容量层对应多少个CPU内核 CPU利用率超过100%真的令人担忧吗?我们是否预计会出现任何明显的性能问题 解决CPU利用率较高(>=100%)导致的性能
我们的应用程序实际上是CPU密集型的,我们看不到任何进一步优化应用程序的方法。期待一些有用的参考资料。回答您的问题 1。M4容量层对应多少个CPU内核?
Cloud Memorystore for Redis是谷歌管理的服务,这意味着谷歌可以保留运行Redis服务的虚拟机的内部详细信息(资源)。尽管如此,预计容量层越高,虚拟机将拥有越多的资源(CPU)。特别是在您的情况下,添加CPU并不能解决CPU使用方面的问题,因为redis服务本身就是这样 从前面的链接中可以看到: 为了最大限度地提高CPU使用率,您可以启动多个Redis实例。
如果你想使用多个CPU,你可以开始考虑一些更早的方法来切分 2。CPU利用率超过100%真的令人担忧吗?
是的,CPU利用率高是一个警告,因为它可能导致连接错误或高延迟。 CPU利用率很重要,但Redis实例是否有足够的效率来维持给定延迟下的吞吐量也很重要。当CPU%较高时,可以使用命令
redis cli--latency
检查redis延迟
3。我们是否预计会出现任何明显的性能问题?这真的很难说或预测,因为它取决于几个因素(客户端服务、在时间范围内运行的命令、工作负载)。造成高延迟和性能问题的一些最常见原因是:
- 客户端虚拟机或服务过载,并且不使用来自Redis的消息。:当客户端打开到Redis的TCP连接时,Redis服务器具有发送到该连接的消息缓冲区。如果客户机服务的CPU已达到最大值,内核没有时间接收来自redis的消息,那么它们将在redis服务器上填满
- 执行的命令消耗了大量CPU:已知处理以下命令可能非常昂贵:
EVAL/EVALSHA
钥匙
LRANGE
ZRANGE/ZREVRANGE
这个问题主要围绕实现的扩展设计。由于redis是单线程的,减少CPU%的更好方法是将数据分片到多个redis实例中,并在其前面有一个代理来分配负载。请查看本节
Twemproxy
下的图表
5.-切换到M5容量层会解决高CPU消耗和相应问题吗?切换到更高容量的层会暂时缓解延迟,但这称为垂直扩展,仅限于Cloud Memorystore提供的层