问题描述:
Solr在每次提交请求之后,都会创建一个新的搜索器,并且直到新搜索器完成预热,才会关闭旧搜索器。Solr利用即将被关闭的旧搜索器中的部分缓存构成新搜索器的缓存,这个过程称为自动预热。
当缓存一部分数据的缓存在增量索引提交后,缓存就会失效,查询会非常慢,所以修改缓存默认配置与新增配置来设置缓存自动预热。
修改solrconfig.xml配置并上传zookeeper
<filterCache class="solr.LFUCache" size="300" initialSize="10" autowarmCount="300"/> <fieldValueCache class="org.apache.solr.search.FastLRUCache" size="300" initialSize="10" autowarmCount="300" /> <queryResultCache class="solr.LRUCache" size="512" initialSize="10" autowarmCount="512"/> <documentCache class="solr.LRUCache" size="5000" initialSize="512" autowarmCount="300"/> <useFilterForSortedQuery>true</useFilterForSortedQuery> |
为了使配置生效,需要reload collection或者重启Tomact。
在第二天的增量后,发现缓存预热生效,但是没有达到多次查询的最高效率,后续可继续优化参数。以下为缓存状态:
其中lookups 为当前cache 查询数, hitratio为当前cache命中率,inserts为当前cache插入数,evictions从cache中踢出来的数据个数,size 为当前cache缓存数,warmuptime为当前cache预热所消耗时间,而已cumulative都为该类型Cache累计的查询,命中,命中率,插入、踢出的数目。