【问题标题】:How many keys are too many in memcached?memcached 中有多少键太多?
【发布时间】:2010-03-19 03:06:24
【问题描述】:

我目前在 memcached 中有大约 650,000 个项目(使用了 430MB 内存),而且这个数字还在增加。预计在持平之前将超过 1,000,000 件。当前的命中/未命中比率为 25:1,因此效率相当不错。我只是想问一下,单个服务器上的 memcached 中的一百万个项目太多了吗?如果没有,多少算太多?

【问题讨论】:

  • 您可以添加另一台服务器并在其上安装 memcache 并分发它。这就是它的美妙之处,那么你就不必担心这个了。
  • 看到了吗?如果 memcached 对于像死星这样的服务器场足够好,那么你就足够了。
  • 在提出问题后的这 11 年,有人悬赏吗?真正的工程师。

标签: memcached


【解决方案1】:

您可以向上扩展到一个 48GB 的​​ 64 位服务器,并在其中放置多达 80,000,000 个项目。或者您可以向外扩展并购买许多 4GB 服务器并在每个服务器上放置多达 2,400,000 个项目。当您将 Memcached 分布在多个服务器上时,它的效果非常好。

【讨论】:

  • @Jim,感谢您的回答,所以 2,400,000 是 memcached 可以存储在 4GB 盒子中的最大项目数吗?
  • 抱歉,这是根据您当前 430MB 中的 650k 个项目的粗略估计。但是 100 万件物品远低于这种机器的最大值。您需要考虑当缓存访问的volume 增加时会发生什么(CPU 或网络是否会成为瓶颈?)以及如果 memcached 机器出现故障会发生什么。即使一台机器可以处理缓存和负载,您也可能需要两台或更多台机器来支持您的应用程序的故障转移。
  • @JimFerrans 我刚刚遇到这个...memcached.org/blog/persistent-memory-2 如果每个项目保存的数据大小小于 500 字节,我假设一个 64GB 的服务器可以容纳多达 1 亿个项目而没有任何显着的性能差异..
【解决方案2】:

“太多”实际上是指当您用完专用于 memcached 的备用内存时,您有多少。

数据存储在一个巨大的哈希表中,使得查找非常接近 O(1)。随着哈希表的增长,理论上冲突会增加,但哈希表概念的高质量(和适合 memcached)的实现通常包括足够的方法来帮助处理这个问题,而且速度非常慢。

【讨论】:

  • 哈希表不是 O(log(n)) 吗?
  • @user1130176 不是在一般情况下,不是。来自假定哈希表的 O(log(n)) 行为表明实现被破坏或误用。您可能正在考虑也常用于实现关联数组的其他结构——例如某种形式的树。
  • 获得恒定时间的唯一方法是一些确定性的,从键到随机访问索引的一对一函数,对,memcached 就是这样做的吗?你怎么能在 O(1) 时间内遍历 100M 条记录?我很想知道这是如何做到的。
  • @user1130176 是的,这就是哈希表的工作方式,密钥通过哈希函数传递,其输出是数组的索引。我建议阅读en.wikipedia.org/wiki/Hash_table 了解详情。
猜你喜欢
  • 2012-09-23
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
相关资源
最近更新 更多