Amazon elasticache 集群看起来是自动扩展的一个很好的选择,但似乎节点之间的负载分布并不均匀。
无论是内存还是 CPU,节点 1 占用的资源似乎几乎是其他节点的两倍。这通常会导致高峰时段的响应时间增加,即使大多数其他节点都处于理想状态。
我正在使用 r3.2x 实例(8cpu,60GB 内存)
有没有人遇到同样的问题?是什么原因导致了这种行为(在 elasticache 中还是在我的 memcache 模块中)?我这边使用的是分布式一致性哈希(Ketama 算法)。有没有更好的替代方案?
答案1
如果您有一个比任何其他缓存项使用得更频繁的缓存项(或很少的缓存项),您将看到这种负载分布不均匀的行为。
您应该检查您的应用程序是否存在此类缓存项。也许您可以记录所有 memcache 请求以查找这些项。识别此类项后,您必须考虑如何将对此项的调用拆分并分发给多个项。
我认为对于此类问题没有单一的解决方案,因为它取决于应用程序逻辑、读写次数等。