我有一个应用程序使用SOLR来查询200万个文档并按时间排序。
查询URL参数如此/select?sort=p_review_date desc&rows=10&start=0&q=*:*
,参数start是变量值,每个请求增加10。
当我进行性能压力测试时,SOLR服务器CPU使用率接近100%。
问题: 1.什么原因导致高CPU使用率? 2.有没有办法降低CPU使用率,例如缓存或其他配置。
这是solrconfig.xml中查询缓存配置的一部分 1024
<queryResultCache
class="solr.LRUCache"
size="40960"
initialSize="10240"
autowarmCount="512"/>
<documentCache
class="solr.FastLRUCache"
size="40960"
initialSize="10240"
autowarmCount="0"/>
<enableLazyFieldLoading>true</enableLazyFieldLoading>
<queryResultWindowSize>10</queryResultWindowSize>
<queryResultMaxDocsCached>500</queryResultMaxDocsCached>
答案 0 :(得分:3)
我管理像你这样的大型索引(使用Autonomy搜索引擎)的经验是,预计会有100%的CPU。因为您的索引存储在RAM中,所以没有I / O活动来减慢搜索操作的速度,CPU将尝试尽可能快地读取RAM,这意味着接近100%的CPU。
为什么你希望你的搜索使用50%的CPU,这需要2倍的时间,对吗?
有一个名为nmon的AIX性能监视工具。在FAQ for nmon中,作者提醒我们
如果你继续使用更短更短的时间 你最终会看到的时期 CPU是100%忙或100% 闲置所有其他号码只是一个 人类没有快速思考的特征 足够,不得不平均 CPU使用时间较长。
即使你没有使用AIX作为你的操作系统,nmon常见问题解答中有很多关于系统/应用程序性能监控和测量的好信息。我推荐它,或者你更多地了解如何诊断系统中的性能问题。
此外,您可能希望在发布中添加一些标签。在SO进行基准测试和测试时,有相当多的活动。
我希望这会有所帮助。
答案 1 :(得分:0)
编辑您的solrconfig.xml
并更改maxWarmingSearchers
的值:
<maxWarmingSearchers>50</maxWarmingSearchers>