【问题标题】:Capacity planning of the Cache sizeCache size的容量规划
【发布时间】:2011-10-02 12:19:10
【问题描述】:

如何进行缓存的容量规划 - 例如为 ehCache、memcache 或 dynacache 分配多少 RAM? 是否有任何行业标准公式?

例如我在数据库中有大约 60,000 条记录。这是公司数据——包含公司名称、描述和公司代码。我想使用 jQuery 实现一个 typeahed 功能,并希望将此公司名称详细信息存储在缓存中。

理想的缓存大小是多少?我知道缓存大小仅限于可用的可用内存量,但有兴趣了解具体方式吗?或者是从某个大小开始并测试、绘制图表并不断调整缓存大小的反复试验。

更新

公司 ID - CHAR(9)

公司名称 - VARCHAR2 (250 CHAR)

公司描述 - NVARCHAR2(1000 CHAR)

【问题讨论】:

  • 公司数据每个字段的最大长度是多少?
  • 我已经用列长度的其他详细信息更新了问题
  • 我建议使用 INT 而不是 CHAR (9) 作为公司 ID

标签: caching


【解决方案1】:

1) 如果您有专用的缓存服务器,那么您不必担心必须使用多少内存空间。您可以使用可用(或接近)的最大可用内存量并让它发挥作用。

2) 如果缓存服务器与您的 Web 服务器相同,那么您必须指定允许 memcached(dynacache 或其他)使用多少。在我看来,没有真正理想的缓存大小。这完全取决于您的服务器有多少内存,您必须将多少数据放入缓存等。只要您的内存在缓存和 Web 服务器之间适当平衡,您就可以了。

在这种情况下,您需要存储在缓存中的数据略少于 100 MB。根据您的服务器有多少,它非常小,但您始终必须考虑数据增长了多少,而且您是否需要添加其他数据(如客户端、产品等)。所以如果你放的比你需要的少,你将不得不停止服务,增加内存允许的值,启动服务。

如果您的服务器处理大量需要大量内存的信息,那么您将必须计算这些进程占用了多少内存和资源。

快速示例:

  • 1 个服务器(缓存和 Web 服务器),总内存为 4G。
  • 系统和进程资源包括cronjob、数据库等:3G
  • 60,000 个客户端,总大小为 100Mb(始终使用大于实际大小以防万一)

在本例中,剩余 1G 内存(大约)。不建议剩余总量,因为您的系统将有足够的量。我会说使用 384Mb 或更少的缓存将是一个好的开始。您允许缓存增长,并且不会影响系统内存。

我建议您监控您的服务器,以确保您的系统的内存分配和缓存完美平衡。

这是一篇关于它的好文章:http://techgurulive.com/2009/07/22/how-to-allocate-memory-within-memcached/

【讨论】:

  • 感谢您的详细解释(+1)。我的情况是您所描述的第二点。本质上,您要说的是 - 在考虑系统、操作系统和其他资源之后,首先找出可用内存量。然后分配比需要的多一点(基于可用性)。顺便说一句,你是怎么想出 100 MB 以上的 - 只是添加了 chars 和 varchars?
  • 通过计算每个字段的最大值*客户端数量或者可以显示稳定状态。您应该看到一个名为“data_length”的字段(这就是我在 MySQL 中所做的:show table status,我确信有一个 Oracle 版本)。然后你可以轻松地说,这是我的数据需要多少,为了安全起见你增加一点。但就像我说的,没有完美的解决方案。您必须检查您的服务器的最佳价值。
猜你喜欢
  • 2012-07-16
  • 2019-02-09
  • 2018-08-28
  • 2018-07-07
  • 2018-06-04
  • 1970-01-01
  • 2011-01-04
  • 2012-10-17
  • 2015-01-02
相关资源
最近更新 更多