假设您有一台具有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可用空间的设置获得合理的内存配置。
答案 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"/>