【问题标题】:Google App Engine - Memcache - Hot key warningGoogle App Engine - 内存缓存 - 热键警告
【发布时间】:2015-04-19 20:21:42
【问题描述】:

我注意到有时我会收到以下带有红色标记的警告消息:

热键警告(memcache 计算单元)/ 您的大量负载仅集中在 4 个值上

第一个key有56%的流量,后面3个有6-7%。 我的问题是:这是一个主要问题吗?它对应用程序性能有什么影响? (如果 memcache 中的值消失,它们将从数据存储中加载)

我在 memcache 中有 108 个项目,总缓存大小为 286KiB

【问题讨论】:

  • 请注意,即使是单个键的 6-7% 的流量也是一个相对较高的数字。解决方案是对热键数据进行更多分片。

标签: java google-app-engine memcached


【解决方案1】:

在你的内存缓存键空间中分配负载是内存缓存的最佳实践

在您的内存缓存键空间中分配负载。拥有一个或 一小组 memcache 项目代表不成比例的数量 流量会阻碍您的应用扩展。这适用于两者 操作/秒和带宽。这个问题通常可以通过以下方式得到缓解 显式分片您的数据。例如,经常更新的 计数器可以分成几个键,读取它们并求和 仅当需要总计时。同样,一个 500K 的数据必须 在每个 HTTP 请求上读取可以拆分为多个键和 使用单个批处理 API 调用回读。 (更好的是 缓存实例内存中的值。)对于专用内存缓存,峰值 单个密钥的访问率应该低 1-2 个数量级 比每 GB 评级。

https://cloud.google.com/appengine/docs/adminconsole/memcache

【讨论】:

  • 集中负载是指写、读还是两者兼而有之(即其中任何一个)?
  • 集中度与服务器处理的负载有关。如果您有多个密钥,则通过不同的连接/服务器平衡负载,因此您的应用程序可以更快地扩展,因为您使用的是不同的服务器。如果您使用一小部分项目,您将增加同一资产的流量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多