2014-03-25 39 views
0

假設您有一臺配備24G RAM的服務器,您可以分配多少內存(Tomcat運行)eXist?eXist的JVM內存調整

我正在設置我們的新網絡服務器,運行Ubuntu 12.04 64位Intel Xeon E5649(2.53GHz)處理器。 eXist在Tomcat內部作爲webapp運行,而db僅用於查詢'stable'集合 - 也就是說,沒有正在執行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

這個問題被問並在現有的開放郵件列表上回答。請參閱http://markmail.org/message/debma4jgejbfadz2的主題檔案。 – joewiz

回答

0

此問題被問到並回答了on the exist-open mailing list。來自[email protected]的回答是:

給eXist更多的回憶並不一定會提高響應時間。 「錯誤」 查詢可能會消耗大量RAM,但查詢優化得越好,所需的RAM就越少:大多數繁重處理將使用索引 查找完成,優化程序將嘗試減小節點的大小設置爲 傳遞。因此緩存內存必須足夠大以容納最多的相關索引頁面。如果情況已經如此,增加緩存空間 不會再提高性能。另一方面,collectionCache的緩存大小太小將導致可識別的瓶頸。例如,如果@collectionCache太小,則 批量上載資源或創建備份可能需要幾個小時(而不是 ,例如分鐘)。

如果大多數查詢都使用索引進行了優化,eXist的8GB內存通常爲您提供足夠的空間來處理偶爾的高負載。理想情況下,您可以運行一些負載測試來查看最大內存使用量。對於 @cacheSize,我很少需要超過512米。 @collectionCache 的設置取決於數據庫中的收集和文檔數量。如果您有 數十或數十萬個藏品,則可能需要增加至 768m或更多。正如我上面所說的,如果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"/>