【发布时间】:2019-06-17 22:15:50
【问题描述】:
我的网站每秒获得 10 - 30 次点击(包括机器人抓取)。我在 Solr 中索引了 600 万条记录(来自 mysql 表)。当我使用 q=something 和 sort=random_ 检索 30 条记录时,Solr 需要 200 到 300 毫秒来响应,有时需要 100 毫秒。
我尝试使用solr.RAMDirectoryFactory 设置改进检索,但出现内存不足错误。我知道solr.RAMDirectoryFactory 设置不是持久的。因此,这是增加缓存并将整个索引加载到内存中的最佳选择。
我正在为 Solr 使用 Digital Ocean 8GB 服务器。
Solr 设置..
<filterCache class="solr.FastLRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
<queryResultCache class="solr.LRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
<documentCache class="solr.LRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
Solr 版本:
solr-spec 7.2.1
solr-impl 7.2.1 b2b6438b37073bee1fca40374e85bf91aa457c0b - ubuntu - 2018-01-10 00:54:21
lucene-spec 7.2.1
lucene-impl 7.2.1 b2b6438b37073bee1fca40374e85bf91aa457c0b - ubuntu - 2018-01
参数:
-DSTOP.KEY=solrrocks-DSTOP.PORT=7983-Djetty.home=/opt/solr/server-Djetty.port=8983-Dlog4j.configuration=file:/var/solr/log4j.properties-Dsolr.data.home=-Dsolr.default.confdir=/opt/solr/server/solr/configsets/_default/conf-Dsolr.install.dir=/opt/solr-Dsolr.jetty.https.port=8983-Dsolr.log.dir=/var/solr/logs-Dsolr.log.muteconsole-Dsolr.solr.home=/var/solr/data-Duser.timezone=UTC-XX:+CMSParallelRemarkEnabled-XX:+CMSScavengeBeforeRemark-XX:+ParallelRefProcEnabled-XX:+PrintGCApplicationStoppedTime-XX:+PrintGCDateStamps-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+PrintHeapAtGC-XX:+PrintTenuringDistribution-XX:+UseCMSInitiatingOccupancyOnly-XX:+UseConcMarkSweepGC-XX:+UseGCLogFileRotation-XX:+UseParNewGC-XX:-OmitStackTraceInFastThrow-XX:CMSInitiatingOccupancyFraction=50-XX:CMSMaxAbortablePrecleanTime=6000-XX:ConcGCThreads=4-XX:GCLogFileSize=20M-XX:MaxTenuringThreshold=8-XX:NewRatio=3-XX:NumberOfGCLogFiles=9-XX:OnOutOfMemoryError=/opt/solr/bin/oom_solr.sh 8983 /var/solr/logs-XX:ParallelGCThreads=4-XX:PretenureSizeThreshold=64m-XX:SurvivorRatio=4-XX:TargetSurvivorRatio=90-Xloggc:/var/solr/logs/solr_gc.log-Xms512m-Xmx512m-Xss256k-verbose:gc
提前致谢
【问题讨论】:
-
如果索引不能保存在 RAM 中(..来自您的内存不足消息),您希望它如何工作?
-
我现在将内存从 Xms512m-Xmx512m 增加到 Xms3g-Xmx3g。我正在寻找更好的缓存选项而不是 solr.RAMDirectoryFactory 设置
-
首先查看 Solr 管理页面下的缓存利用率 - 如果命中率非常低,您可能需要增加缓存大小。查询的格式和过滤器也会影响缓存的使用方式。
标签: caching indexing solr lucene solr4