Memcached 扩展策略

dan*_*kim 5 memory scaling memcached

目前我正在运行一个带有 4 个专用内存缓存服务器的生产环境,每个服务器都有 48Gb 的 RAM(42 个专用于内存缓存)。现在他们做得很好,但流量和内容正在增长,明年肯定也会增长。

您对进一步扩展 memcached 的策略有何看法?到目前为止你做得如何:

您是否向这些机器添加更多 RAM 直到它们的容量达到最大——在相同数量的机器上有效地将缓存池翻倍?或者您是否通过添加更多相同的框,使用相同数量的 RAM 来水平扩展。

当前的机器肯定可以处理更多的 RAM,因为它们的 CPU 负载很低,唯一的瓶颈是内存,但我想知道分配缓存是否不是一个更好的策略,使事情变得更加冗余并最大限度地减少对缓存的影响丢失一盒(丢失 48Gb 缓存与丢失 96Gb)。你会(或让你)如何处理这个决定。

Jef*_*and 1

我很想知道您正在移动的是什么消耗了超过 100 GB 的内存,同时又没有最大化您的 NIC。

Memcache 在机器之间相当线性地扩展,因此您必须问的问题是:

  • 我的系统总线目前是否已饱和?
    • 这可能与 CPU 使用率无关——DMA 传输不会这样显示
  • 与包含增加内存量的新盒子相比,高密度内存有多贵?
    • 机架空间、功耗等的全部成本
  • 您是否发现 1% 的时间丢失 25% 的缓存与 2% 的时间丢失 12.5% 的缓存之间存在根本区别?(随机选择的失败率)。

扩展是 10% 的直觉,70% 的测量和适应,20% 的回溯并尝试其他方法。

加载它们,直到它们最大限度地发挥最薄弱的环节或不再具有成本效益。他们可能已经存在,也可能尚未存在。