Solr缓存管理

一.简介

  Solr提供了一系列的内置缓存来优化查询性能。Solr的缓存原理主要涉及以下4个方面:

  1.缓存大小及缓存置换法

    从缓存大小的角度来看,不能将缓存设置的太大,否则它会消耗JVM大量的内存。Solr能将所有的缓存对象都保存到内存中,不会溢写到磁盘中。为了控制缓存大小,Solr要求为每一个缓存都设置一个缓存对象的数量上限。当达到上限时,Solr将会采用最久未使用【Least Recently Used, LRU】置换法或最近最少使用【Least Frequently Used, LFU】置换法回收一部分缓存空间。

    最久未使用置换法在缓存大小达到阈值上限时,根据缓存对象最后一次被请求的时间来决定缓存对象被回收的次序。当缓存区达到上限,需要添加新的对象时,LRU置换法将置换缓存中最久未被使用的对象。LRU置换法是Solr的默认缓存置换算法。同时,Solr还提供了最近最少使用置换法LFU,该方法根据缓存对象被请求频率的高低决定缓存对象被回收的次序。这种置换法给与缓存中使用频率高的对象更高的优先级,而不是最近被请求的对象。Solr的过滤器缓存使用的是LFU置换法。因为过滤查询的创建和存储都是很耗费资源的,所以需要尽量降低过滤器缓存的存储大小,并且给予应用中频繁使用的过滤器更高的优先级。

    在缓存大小这有一个常见的误区,就是内存空间越大,缓存就设置的越大。这样做存在的问题是,一旦某个缓存在一次提交操作之后失效了,JVM就需要做大量的垃圾回收工作。且关闭一个搜索器会使得该搜索器缓存的所有对象都失效。如果没有根据垃圾回收的实际情况对缓存大小进行合适的调整,就可能导致服务器因垃圾回收时间过长而导致长时间停止服务。因此,现阶段最重要的是避免定义过大的缓冲区,并且要对缓存对象进行周期性回收。

  2.缓存命中率与缓存回收

    缓存命中率是指应用程序的缓存命中的用户请求数量占所有用户请求数量的比例。缓存命中率表明了缓存对应用程序的性能优化所起到的作用。理想情况下,希望缓存命中率尽量接近1【100%】,低缓存命中率表明缓存对Solr的性能优化没有起到多大作用。

    缓存回收数表明有多少缓存对象被缓存置换法回收了。如果回收量很大,则表明应用程序的缓存对象的最大值可能设置的太小。缓存回收数和缓存命中率是紧密相关的,低的缓存回收数往往代表一个较好的缓存命中率。

  3.缓存对象失效

  4.自动预热新缓存

原文地址:https://www.cnblogs.com/yszd/p/11779827.html

时间: 2024-11-04 10:54:57

Solr缓存管理的相关文章

HTML5 离线缓存管理库

一.HTML5离线缓存技术 支持离线缓存是HTML5中的一个重点,离线缓存就是让用户即使在断网的情况下依然可以正常的运行应用.传统的本地存储数据的方式有 localstorage,sessionstorage和cookie.但是这些传统的方式有着致命的弊端.首先这些传统的存储方式的最大使用空间有 限,最多不超过5M;其次它们处理大规模的结构化数据的能力有限.鉴于传统方式的局限性,HTML5提出了三种新的离线缓存解决方案:Web SQL,indexedDB和File System. 其中Web S

十一:Centralized Cache Management in HDFS 集中缓存管理

集中的HDFS缓存管理,该机制可以让用户缓存特定的hdfs路径,这些块缓存在堆外内存中.namenode指导datanode完成这个工作. Centralized cache management in HDFS has many significant advantages. Explicit pinning prevents frequently used data from being evicted from memory. This is particularly important

一个NFS缓存管理包的bug导致文件系统满的问题和解决方法

这几天安装CentOS 6的虚拟机总是提示文件系统满,一开始以为是最近oracle经常操作大数据量提交导致undo tbs无限扩大,后来发现原来是NFS缓存管理包cachefilesd的问题.分享一下: 由于是测试虚拟机,文件系统懒得专门规划,只划分了一个根目录分区.(各位admin切记不要犯这种实际生产环境的大忌): [[email protected]* /]df -h Filesystem            Size  Used Avail Use% Mounted on /dev/m

Hibernate缓存管理

Hibernate缓存管理 ++YONG原创,转载请注明 1.    Cache简介: 缓存(Cache )是计算机领域非常通用的概念.它介于应用程序和永久性数据存储源(如硬盘上的文件或者数据库)之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行性能.缓存中的数据是数据存储源中数据的拷贝,应用程序在运行时直接读写缓存中的数据,只在某些特定时刻按照缓存中的数据来同步更新数据存储源. 缓存的物理介质通常是内存,而永久性数据存储源的物理介质通常是硬盘或磁盘,应用程序读写内在的

01-08-03【Nhibernate (版本3.3.1.4000) 出入江湖】二级缓存:NHibernate自带的HashtableProvider之缓存管理

http://www.cnblogs.com/lyj/archive/2008/11/28/1343418.html 管理NHibernate二级缓存 NHibernate二级缓存由ISessionFactory创建并由ISessionFactory自行维护.我们使用NHibernate操作数据时,ISessionFactory能够自动同步缓存,保证缓存的有效性.但是当我们批量操作数据时,往往NHibernate不能维护缓存持久有效.ISessionFactory提供了可编程方式的缓存管理方法.

Magicodes.WeiChat——缓存管理

本框架支持缓存管理,内部机制使用开源库CacheManager.支持全局缓存.租户缓存,默认使用的系统缓存实现,可以在Web.config将其配置为其他缓存类型,比如支持Redis.内存等. 开源库地址:https://github.com/MichaCo/CacheManager 1.1.1 配置 默认配置如下,见Web.config cacheManager元素内容: <!--缓存配置--> <cacheManager xmlns="http://tempuri.org/C

Windows Server 存储空间之存储分层和缓存管理

存储空间存储分层 在谈到存储分层之前,我们需要了解Windows Server存储空间里面包含了多少层以及如何定义每一个分层.基于读写性能快慢的相对值,存储空间分为两个数据存储层,一个存储层为快速层,通常由SSD硬盘提供,用于存储热数据,也即经常访问的数据:另一个存储层为慢速层,通常由HDD硬盘提供,用于存储冷数据,也即不经常访问的数据.默认情况下,存储空间具有这两个存储速率不同的存储层的虚拟磁盘,存储分层目的在于平衡 SSD性能和硬盘驱动器 (HDD)容量.在存储层都有可用空间时,新的数据通常

solr缓存需要注意的问题

fieldValueCache默认是存在的.如果没有在solrConfig.xml中配置,那么 其初始大小10,最大10000,不会autowarm .在PC上开发时,会有内存溢出的风险. solr缓存需要注意的问题

HDFS集中式缓存管理(Centralized Cache Management)

Hadoop从2.3.0版本开始支持HDFS缓存机制,HDFS允许用户将一部分目录或文件缓存在HDFS当中,NameNode会通知拥有对应块的DataNodes将其缓存在DataNode的内存当中 集中式缓存管理有着许多显著的优势: 防止那些被频繁使用的数据从内存中清除 因为DataNode的缓存由NameNode来管理,applications在做任务安排时可以查询这个缓存的列表,使用一个被缓存的块副本能够提高读性能 当块被DataNode缓存之后,客户端可以使用一个新的.高效的.zero-c