我的服务器有可用的内存,但我的zope进程似乎是“封顶”3GB。增加缓存大小不再有用了

时间:2013-04-12 13:21:18

标签: plone zope

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

我们在从3000一直到6000000的时间段内多次增加了缓存大小。除了最近的一个blip之外,我们已经达到了3000万的上限(不确定是什么参数)(参见'年份'图表)。这发生在大约1000000的高速缓存大小,之后,对高速缓存大小的更改似乎对缓存的对象或zope的内存使用没有影响。

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

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

是否有其他设置可能会“限制”3GB的内容?

zope object cache statistics

3 个答案:

答案 0 :(得分:2)

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

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

有关如何使用ulimit的详细信息,请参阅Limit memory usage for a single Linux process

答案 1 :(得分:2)

我不知道你服务器的内存是怎么回事,但是你这样做是错误的:你根本无法在内存中拥有600万个对象,这是不可能的:在一个在Plone 4.x中的典型安装,您需要介于 50 GB 150 GB 内存之间。

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

第二,请务必安装最新版本的munin.zope插件,以收集有关您服务器的可靠信息(给Leo Rochael提示)。

第三,阅读this thread on the core developers list以了解如何为缓存大小计算更实际的数字(帽子提示为Hanno Schlichting)。

第四,缓慢移动数字并花时间监测结果;检查内存中的对象总数,避免不惜任何代价进行内存交换。如果您发现对象数低于目标值,则可以停止增加缓存大小。记住:你永远不会拥有记忆中的所有物品,这是非常困难的,因为人们往往只访问你内容的一部分。

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

第六,在Plone setup list分享您的结果!

晚安,祝你好运!

答案 2 :(得分:1)

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