solr面试题_查看您的Solr缓存大小:Eclipse Memory Analyzer

solr面试题

solr面试题

Solr使用不同的缓存来防止请求期间过多的IO访问和计算。 如果索引不是很频繁发生,则可以通过使用这些缓存来获得巨大的性能提升。 根据索引数据的结构和缓存的大小,它们可能会变得很大,并占用堆内存的很大一部分。 在本文中,我想展示如何使用Eclipse Memory Analyzer来查看缓存实际在内存中使用了多少空间。

配置缓存

可以在query部分的solrconfig.xml中配置所有Solr缓存。 您会发现如下定义:

<filterCache class="solr.FastLRUCache"
  size="8000"
  initialSize="512"
  autowarmCount="0"/>

这是配置为使用FastLRUCache的筛选器缓存的FastLRUCache ,最大大小为8000个项目,并且没有自动预热。 Solr附带两种常用的缓存实现,即FastLRUCacheFastLRUCache ,它们使用ConcurrentHashMapLRUCache来同步调用。 某些缓存仍配置为使用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的类名称。 对于默认配置,您将看到两个实例。 单击其中一个实例时,您可以在左下方窗口中看到缓存的名称,在本例中为过滤器缓存。

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面试题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值