假设你有一台有24G内存的服务器,你会给(运行Tomcat) eXist分配多少内存?
我正在设置我们的新new服务器,使用Intel Xeon E5649 (2.53 bit)处理器,运行Ubuntu12.04 64位。eXist在Tomcat中作为webapp运行,而db仅用于查询“稳定”集合--也就是说,不会对eXist中的资源执行任何更新。
我一直在试验不同的堆大小(通过启动Tomcat进程时的-Xms和-Xmx设置),到目前为止还没有注意到eXist查询的响应时间有多大差异。换句话说,分配给JVM的是4G还是16G似乎无关紧要。我还将eXist的WEB-INF/conf.xml文件中的@cachesize和@集合缓存提升到了8192M,但这似乎没有太大效果。我想当eXist在Tomcat中运行时,这些设置/会/有影响吗?
我知道每种情况都是不同的(我也知道涉及Tomcat服务器),但是有没有一些关于eXist性能的经验法则。分配给它的内存?我想要在具有更多可用RAM的设置中获得合理的内存配置。
发布于 2014-07-05 00:48:46
这个问题被问到并回答了on the exist-open mailing list。来自wolfgang@exist-db.org的答案是:
为eXist提供更多内存并不一定会缩短响应时间。“坏”查询可能会消耗大量RAM,但是查询优化得越好,所需的RAM就越少:大部分繁重的处理都将使用索引查找来完成,优化器将尝试减少要传递的节点集的大小。因此,缓存内存必须足够大,以容纳最相关的索引页。如果已经是这样,那么增加缓存空间将不会再提高性能。另一方面,collectionCache的cacheSize太小将导致可识别的瓶颈。例如,如果@集合缓存太小,批量上传资源或创建备份可能需要几个小时(而不是几分钟)。
如果您的大多数查询都针对使用索引进行了优化,那么用于eXist的8GBRAM通常会为您提供足够的空间来处理偶尔出现的高负载。理想情况下,您可以运行一些负载测试来查看实际的最大内存使用量。对于@cacheSize,我很少需要超过512m。@collectionCache的设置取决于数据库中的集合和文档的数量。如果你有数万或数十万的收藏品,你可能不得不将其增加到7.68亿甚至更多。正如我上面所说的,如果collectionCache变得太小,您将发现在上传或备份过程中性能突然崩溃。
所以总而言之,对我来说合理的设置应该是:-Xmx8192m,@cacheSize="512m",@collectionCache="768m“。如果你能负担得起16G的主存,那当然不会有什么坏处。此外,如果您正在使用lucene索引或新的范围索引,您也应该考虑在conf.xml中相应的索引模块配置中增加@buffer设置:
<module id="lucene-index" buffer="256" class="org.exist.indexing.lucene.LuceneIndex" />
<module id="range-index" buffer="256" class="org.exist.indexing.range.RangeIndex"/>
https://stackoverflow.com/questions/22635874
复制相似问题