查看您的Solr缓存大小:Eclipse Memory Analyzer
Solr使用不同的緩存來防止請求期間過多的IO訪問和計算。 當索引不是很頻繁發生時,您可以通過使用這些緩存來獲得巨大的性能提升。 根據索引數據的結構和緩存的大小,它們可能會變得很大,并占用堆內存的很大一部分。 在本文中,我想展示如何使用Eclipse Memory Analyzer來查看緩存實際在內存中使用了多少空間。
配置緩存
可以在query部分的solrconfig.xml中配置所有Solr緩存。 您會發現如下定義:
<filterCache class="solr.FastLRUCache"size="8000"initialSize="512"autowarmCount="0"/>這是配置為使用FastLRUCache的篩選器緩存的FastLRUCache ,最大大小為8000個項目,并且沒有自動預熱。 Solr附帶了兩個常用的緩存實現,即FastLRUCache和FastLRUCache ,它們使用ConcurrentHashMap和LRUCache來同步調用。 某些緩存仍配置為使用LRUCache但在一些讀取繁重的項目上,我也將其更改為FastLRUCache ,因此效果很好。
另外,從Solr 3.6開始,還有LFUCache 。 我從未使用過它,它仍然標記為實驗性的,隨時可能更改。
Solr帶有以下緩存:
過濾緩存
緩存過濾器查詢的位集。 如果要重新使用過濾器,這可能是非常有效的緩存。
QueryResultCache
存儲用于查詢的文檔ID的有序列表。
文檔緩存
緩存Lucene文檔的存儲字段。 如果字段很大或很多,則此緩存可能會變得很大。
FieldValueCache
主要用于構面的緩存。
另外,您還將看到對FieldCache的引用,該引用不是Solr管理的緩存,無法配置。
在默認配置中,Solr每個高速緩存僅高速緩存512個項目,這通??赡芴?。 您可以在核心的Plugin / Stats / Caches部分的S??olr的管理視圖中查看緩存的使用情況。 這將告訴您命中率以及緩存的逐出。
這些統計信息是調整緩存的一個很好的起點,但是您應該意識到,通過將大小設置得太大,您會看到一些不必要的GC活動。 這就是為什么查看內存中緩存的實際大小而不是僅查看項目數可能有用的原因。
Eclipse墊
Eclipse MAT是查看內存中的堆并查看哪些對象占用空間的好工具。 顧名思義,它基于Eclipse,可以作為獨立工具下載,也可以通過更新站點獲得,以集成到現有實例中。
可以使用該工具直接獲取堆轉儲,但您也可以打開現有的轉儲。 如果您在緩存中保留許多項目,則打開后它將自動計算可能已經包含某些緩存對象的最大對象的圖表。
使用餅圖下方的鏈接,您還可以打開更多的自動報告,例如,“最大消費者”,這是有關大型對象的更詳細頁面。
即使您確實在此處看到了某些緩存類,也無法真正看到消耗內存的是哪個緩存。 使用報告頂部的“查詢瀏覽器”菜單,您也可以直接列出類的實例,無論它們有多大。
我們選擇帶有傳出引用的列表對象,然后輸入FastLRUCache org.apache.solr.search.FastLRUCache的類名稱。 對于默認配置,您將看到兩個實例。 單擊其中一個實例時,您可以在左下方窗口中看到緩存的名稱,在本例中為過濾器緩存。
堆大小有兩個可用的數字: 淺大小和保留大小 。 當查看緩存時,我們會對保留的大小感興趣,因為這是實例被垃圾回收時可用的大小,即僅由緩存使用的緩存的大小。 在我們的情況下,這大約是700kB,但這會增長很多。
您也可以對org.apache.solr.search.LRUCache做同樣的檢查,以查看緩存的實際大小。
結論
緩存可以比這里的示例大很多。 Eclipse Memory Analyzer已經幫助我很多了,看看堆太大的問題是否存在。
翻譯自: https://www.javacodegeeks.com/2014/05/see-your-solr-cache-sizes-eclipse-memory-analyzer.html
總結
以上是生活随笔為你收集整理的查看您的Solr缓存大小:Eclipse Memory Analyzer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何长期复利投资?
- 下一篇: 在NIO.2中创建文件和目录