适用于eXist的JVM内存调整

时间:2014-03-25 13:20:10

标签: memory-management jvm exist-db

假设您有一台具有24G RAM的服务器,您将分配多少内存(Tomcat运行)eXist?

我正在设置我们的新网络服务器,配备Intel Xeon E5649(2.53GHz)处理器,运行64位Ubuntu 12.04。 eXist在Tomcat中作为webapp运行,db仅用于查询“稳定”。集合 - 也就是说,没有对eXist中的资源执行更新。

我一直在尝试不同的堆大小(通过启动Tomcat进程时通过-Xms和-Xmx设置),到目前为止还没有注意到针对eXist的查询的响应时间有很大差异。换句话说,JVM是分配4G还是16G似乎并不重要。我还在eXist的WEB-INF / conf.xml文件中将@cachesize和@collectionCache提升为例如8192M,但这似乎没什么影响。我想当eXist在Tomcat中运行时,这些设置/是否有影响?

我知道每种情况都不同(我知道有一个涉及Tomcat服务器),但是对于eXist性能w.r.t有一些经验法则。分配的内存?我想为一个具有更大RAM可用空间的设置获得合理的内存配置。

1 个答案:

答案 0 :(得分:0)

这个问题被问及并回答on the exist-open mailing list。 wolfgang@exist-db.org的答案是:

  

为eXist提供更多内存不一定会改善响应时间。 "差"   查询可能会消耗大量的RAM,但查询优化得越多越好   他们需要更少的RAM:大部分繁重的处理将使用索引完成   查找和优化器将尝试减少节点集的大小   传了过来。因此,缓存存储器必须足够大以容纳最多   相关索引页面。如果已经是这种情况,请增加缓存空间   将不再提高性能。另一方面,cacheSize太小   collectionCache将导致可识别的瓶颈。例如,a   批量上载资源或创建备份可能需要几个小时(相反   例如分钟)如果@collectionCache太小了。

     

如果大多数查询都经过优化以使用索引,那么eXist的8gb RAM就可以了   通常会给你足够的空间来处理偶尔的高负荷。理想情况下你   可以运行一些负载测试来查看实际使用的最大内存量。对于   @cacheSize,我很少超过512米。 @collectionCache的设置   取决于数据库中的集合和文档的数量。如果你有   数十或数十万个集合,你可能需要增加它   768米或以上。正如我上面所说,你会发现突然崩溃了   如果collectionCache变得太小,则在上载或备份期间的性能。

     

总而言之,对我来说合理的设置是:-Xmx8192m,   @cacheSize =" 512m",@ collectCache =" 768m"。如果你能负担得起16G主力   记忆肯定不会伤害。此外,如果您正在使用lucene索引或   新的范围索引,你应该考虑增加@buffer设置   conf.xml中相应的索引模块配置:

<module id="lucene-index" buffer="256" class="org.exist.indexing.lucene.LuceneIndex" />
<module id="range-index" buffer="256" class="org.exist.indexing.range.RangeIndex"/>