首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Solr缓存机制的问题

问关于Solr缓存机制的问题
EN

Stack Overflow用户
提问于 2010-11-25 00:17:20
回答 2查看 4.1K关注 0票数 6

我在一个Apache Solr项目中工作。(分布在云环境中-亚马逊ec2实例)。

我注意到Solr在缓存结果方面做得很好。当我再次执行相同的查询时-响应状态为Solr QTime 0或1毫秒。

我想对Solr系统进行压力测试。因此,我可以使用的查询列表有限(50000个唯一查询)。现在的问题是所有的查询都被缓存了!

当我进行压力测试时--大约5分钟后--我所有的查询都会在Solr中给出并执行。这使得系统在繁重的负载下冒汗:) (这就是目的)。但是,当我再次执行相同的查询集时- QTime几乎为零!--> Solr很轻松&没有压力。

我的问题是:如何关闭所有Solr缓存(包括Solr和Lucence缓存)?或者如何限制缓存?

我已经尝试关闭所有Solr内部缓存,但缓存仍然存在。( QueryResultCache和FieldCache )注:配置中提到Lucence将管理一个内部缓存--也许这个缓存就是问题所在?

奇怪的是,所有50,000个查询都可以存储在缓存中--开箱即用。

EN

回答 2

Stack Overflow用户

发布于 2010-11-25 03:59:43

您可以注释掉配置中的filterCache, queryResultCache and documentCache。Lucene's FieldCache cannot be disabled。

尽管这样做没有任何意义,即使对于基准测试也是如此。您还会在操作系统中禁用磁盘缓存吗?CPU缓存(所有三个级别)?每个硬盘的内部缓存?

缓存是系统的一部分,如果您禁用它们,您将无法准确地模拟生产中发生的情况,从而使基准测试无用。

票数 6
EN

Stack Overflow用户

发布于 2012-11-02 23:38:27

关闭缓存是一个很好的想法,至少是那些特定于应用程序的缓存。本例中的基准测试旨在找出以前从未见过的查询的响应/成本;而不是那些在缓存过期时很流行的查询。

听起来,您想要的是告诉您搜索系统执行情况的指标,而不是查询缓存。

之前的答案真的很离谱,建议所有基准都应该衡量相同的东西,“他自己对现实生活表现的定义”。这不是工程的工作方式。

关于“磁盘缓存”的评论。Linux中没有磁盘缓存;只有一个页面缓存;无论该页面是持久存储在磁盘上、在内存中创建和销毁的,还是预先分配给大型文件系统(即smart....they )的,都是页面。

使用缓存进行基准测试是有好处的。如果您不厌其烦地测量缓存性能指标。是啊。

顺便说一句,在"-server“和"XXcompileThreshold”之间,你想要确保你的第一个大型查询集是足够随机的,或者是专门选择的,以便在Solr/Lucene中执行尽可能多的函数路径;因此,JIT既是活跃的,也是固定的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4268966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档