-1

下面的屏幕截图显示了我的 zope 实例的缓存相关状态随时间的变化(到目前为止 3 个月)。

在此期间,我们已经将缓存大小从 3000 增加到 6000000 数倍。除了最近的一个亮点外,我们已经达到了 3000 万的上限(不知道那是什么参数)(参见 'by年的图表)。这发生在大约 1000000 的缓存大小,之后,对缓存大小的更改似乎对缓存对象或 zope 的内存使用没有影响。

zope/plone 进程从使用大约 500 MB 内存转移到使用 3GB(我们在这台服务器上有 8GB)。

我的预期是向上滑动缓存大小将使 zope 能够利用更多可用的服务器内存,但它停留在 3GB(服务器上可能有 8GB)。

是否有另一种设置可能会“限制”3GB 的东西?

zope 对象缓存统计

4

3 回答 3

2

我不知道您的服务器内存发生了什么,但您这样做是错误的:您根本不能在内存中拥有 600 万个对象,这是不可能的:在 Plone 4.x 的典型安装中,您应该需要为此,内存介于 50 GB150 GB之间。

为了解决这个问题,我们需要更多信息:您使用的是哪个 Plone 版本?您的数据库中有多少对象?有多少线程?您的服务器的架构是什么,32 位还是 64 位?

其次,确保安装最新版本的munin.zope插件以收集有关您的服务器的可靠信息(向 Leo Rochael 致敬)。

第三,阅读核心开发人员列表上的这个线程,了解如何为您的缓存大小计算更实际的数字(向 Hanno Schlichting 致敬)。

第四,将数字慢慢上移,并花时间监控结果;检查内存中的对象总数并不惜一切代价避免内存交换。如果您看到对象的数量低于您的目标值,您可以停止增加缓存大小。记住:你永远不会在内存中拥有所有对象,这非常困难,因为人们往往只访问你内容的一部分。

第五,如果您在 Plone 4.x 中测试DateTime 3.0.3(在将其投入生产之前在暂存服务器上),这可能会进一步减少高达 40% 的内存消耗(有人告诉我它现在也适用于 Plone 3。 x,但我自己没有检查过)。

第六,在Plone 设置列表上分享您的结果!

晚安,好运!

于 2013-04-13T23:03:51.703 回答
2

猜测一下,您的操作系统正在限制每个进程的内存大小。

在 bash shell 中,检查ulimit -v是否设置了虚拟内存限制。有关man bash该命令的完整选项列表,请参阅。

有关如何使用的更多信息,请参阅限制单个 Linux 进程的内存ulimit使用。

于 2013-04-12T17:52:53.430 回答
1

32 位平台——不知道这是否仅限于英特尔——每个进程限制为 3GB。那是因为它每个进程最多只能寻址 4GB,而底部的 1GB 被内核使用。当然,PAE 允许您访问高达 64GB 的空间,但是您在此处遇到了某些每个进程的限制。你真的不能再在 32 位平台上运行高流量的 plone 站点了。通常最简单的解决方案是将您的操作系统升级到 64 位版本,因为除非您拥有非常古老的硬件,否则它应该已经能够运行 x86-64。

于 2013-04-23T14:02:55.057 回答