2011-10-02 33 views
17

如何进行缓存容量规划 - 例如为ehCache,memcache或dynacache分配多少RAM? 有没有行业标准配方?缓存容量规划

例如,我在数据库中有大约60,000条记录。这是公司数据 - 包含公司名称,说明和公司代码。我想使用jQuery实现一个打印特性,并且希望将这个公司名称的详细信息存储在缓存中。

什么是理想的缓存大小?我知道缓存大小仅限于可用内存量,但有兴趣知道具体的方法吗?或者是试验和错误,从一些尺寸和测试开始,绘制图形并不断调整缓存大小。

更新

公司ID - CHAR(9)

公司名称 - VARCHAR2(250 CHAR)

公司DESC - NVARCHAR2(1000 CHAR)

+0

什么是企业数据都有每个字段的最大长度? –

+0

我已更新问题与列的长度的其他详细信息 – basav

+3

我会建议使用INT而不是CHAR(9)为公司ID –

回答

38

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

2)如果缓存服务器与您的Web服务器相同,那么您将必须指定允许使用多少memcached(dynacache或其他)。以我的观点来看,并不存在一个理想的缓存大小。这一切都取决于你的服务器有多少内存,你需要将多少数据放入缓存等等。只要你的内存在缓存和Web服务器之间有适当的平衡,你就很好。

在这种情况下,您需要将少于100 MB的数据存储在缓存中。取决于你的服务器有多少,它是非常小的,但你将永远不得不考虑有多少数据增长,还有,你是否需要添加额外的数据(如客户端,产品等)。所以如果你投入的资源少于你的需求,你将不得不停止服务,增加允许的内存价值,启动服务。

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

快速例如:

  • 1与总存储器的4G服务器(高速缓存和web服务器)。
  • 系统和流程的资源,包括的cronjob,数据库等:3G
  • 60000多客户共100兆的

(总是以防万一使用超过实际尺寸)在这个例子中,1G内存左(大约)。由于您的系统足够多,因此不建议留下剩余金额。我会说使用384Mb或更少的缓存将是一个好的开始。您允许缓存增加,但不会影响系统内存。

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

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

+0

感谢您的详细解释(+1)。我的情况是你所描述的第二点以上。从本质上讲,你所说的是 - 首先在系统,操作系统和其他资源中找到有多少空闲内存可用。然后分配比需要的多一点(基于可用性)。顺便说一句,你是如何提出100 MB以上的 - 只是添加了字符和变种? – basav

+1

通过计算每个字段的最大值*客户端数量,或者您可以显示稳定状态。你应该看到一个字段调用“data_length”(这是我在MySQL中做的:'show table status',我相信这是一个Oracle版本)。然后你轻松地说,这是我的数据需要多少,为了安全起见,你增加一点。但就像我说的,没有完美的解决方案。你必须检查你的服务器的最佳价值。 –

+15

很好的解释 – eric