【发布时间】:2016-09-16 10:50:05
【问题描述】:
我有一个 3 node SolrCloud 设置 (replication factor 3),在 SSD 上运行 Ubuntu 14.04 Solr 6.0。许多索引发生,只有softCommits。一段时间后,索引速度变得非常慢,但是当我在变慢的节点上重新启动 solr 服务时,一切恢复正常。问题是我需要猜测哪个节点变慢了。
我有 5 个集合,但只有一个集合(主要使用)变慢了。总数据大小为144G,包括 tlogs。
所说的核心/集合是99G,包括tlogs,tlog只有313M。堆大小为16G,总内存为32G,数据存储在SSD上。每个节点的配置都是一样的。
似乎很奇怪的是,当这发生时,我在两个从属服务器上每秒都有数百或数千条日志行:
2016-09-16 10:00:30.476 INFO (qtp1190524793-46733) [c:mycollection s:shard1 r:core_node2 x:mycollection_shard1_replica1] o.a.s.u.p.LogUpdateProcessorFactory [mycollection_shard1_replica1] webapp=/solr path=/update params={update.distrib=FROMLEADER&update.chain=add-unknown-fields-to-the-schema&distrib.from=http://192.168.0.3:8983/solr/mycollection_shard1_replica3/&wt=javabin&version=2}{add=[ka2PZAqO_ (1545622027473256450)]} 0 0
2016-09-16 10:00:30.477 INFO (qtp1190524793-46767) [c:mycollection s:shard1 r:core_node2 x:mycollection_shard1_replica1] o.a.s.u.p.LogUpdateProcessorFactory [mycollection_shard1_replica1] webapp=/solr path=/update params={update.distrib=FROMLEADER&update.chain=add-unknown-fields-to-the-schema&distrib.from=http://192.168.0.3:8983/solr/mycollection_shard1_replica3/&wt=javabin&version=2}{add=[nlFpoYNt_ (1545622027474305024)]} 0 0
2016-09-16 10:00:30.477 INFO (qtp1190524793-46766) [c:mycollection s:shard1 r:core_node2 x:mycollection_shard1_replica1] o.a.s.u.p.LogUpdateProcessorFactory [mycollection_shard1_replica1] webapp=/solr path=/update params={update.distrib=FROMLEADER&update.chain=add-unknown-fields-to-the-schema&distrib.from=http://192.168.0.3:8983/solr/mycollection_shard1_replica3/&wt=javabin&version=2}{add=[tclMjXH6_ (1545622027474305025), 98OPJ3EJ_ (1545622027476402176)]} 0 0
2016-09-16 10:00:30.478 INFO (qtp1190524793-46668) [c:mycollection s:shard1 r:core_node2 x:mycollection_shard1_replica1] o.a.s.u.p.LogUpdateProcessorFactory [mycollection_shard1_replica1] webapp=/solr path=/update params={update.distrib=FROMLEADER&update.chain=add-unknown-fields-to-the-schema&distrib.from=http://192.168.0.3:8983/solr/mycollection_shard1_replica3/&wt=javabin&version=2}{add=[btceXK4M_ (1545622027475353600)]} 0 0
2016-09-16 10:00:30.479 INFO (qtp1190524793-46799) [c:mycollection s:shard1 r:core_node2 x:mycollection_shard1_replica1] o.a.s.u.p.LogUpdateProcessorFactory [mycollection_shard1_replica1] webapp=/solr path=/update params={update.distrib=FROMLEADER&update.chain=add-unknown-fields-to-the-schema&distrib.from=http://192.168.0.3:8983/solr/mycollection_shard1_replica3/&wt=javabin&version=2}{add=[3ndK3HzB_ (1545622027476402177), riCqrwPE_ (1545622027477450753)]} 0 1
2016-09-16 10:00:30.479 INFO (qtp1190524793-46820) [c:mycollection s:shard1 r:core_node2 x:mycollection_shard1_replica1] o.a.s.u.p.LogUpdateProcessorFactory [mycollection_shard1_replica1] webapp=/solr path=/update params={update.distrib=FROMLEADER&update.chain=add-unknown-fields-to-the-schema&distrib.from=http://192.168.0.3:8983/solr/mycollection_shard1_replica3/&wt=javabin&version=2}{add=[wr5k3mfk_ (1545622027477450752)]} 0 0
在这种情况下,192.168.0.3 是主人。
我的工作流程是,我同时插入 2500 个文档和大约 10 个线程,这在大多数情况下工作得非常好,但有时它会像描述的那样变慢。偶尔会有来自其他来源的更新/索引调用,但不到百分之一。
更新
完整的配置(来自 Config API 的输出)是 http://pastebin.com/GtUdGPLG
更新 2
这些是命令行参数:
-DSTOP.KEY=solrrocks
-DSTOP.PORT=7983
-Dhost=192.168.0.1
-Djetty.home=/opt/solr/server
-Djetty.port=8983
-Dlog4j.configuration=file:/var/solr/log4j.properties
-Dsolr.install.dir=/opt/solr
-Dsolr.solr.home=/var/solr/data
-Duser.timezone=UTC
-DzkClientTimeout=15000
-DzkHost=192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181
-XX:+CMSParallelRemarkEnabled
-XX:+CMSScavengeBeforeRemark
-XX:+ParallelRefProcEnabled
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC
-XX:+PrintTenuringDistribution
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:CMSInitiatingOccupancyFraction=50
-XX:CMSMaxAbortablePrecleanTime=6000
-XX:ConcGCThreads=4
-XX:MaxTenuringThreshold=8
-XX:NewRatio=3
-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
-Xms16G
-Xmx16G
-Xss256k
-verbose:gc
更新 3
又发生了,这些是一些 Sematext Graphs:
更新 4 (2018-01-10)
这是一个很老的问题,但我最近发现有人使用CVE-2017-12629 在我所有的 solr 机器上安装了一个加密币矿工,我通过升级到 6.6.2 解决了这个问题。
如果您不确定您的系统是否被渗透,请使用ps aux | grep solr 检查用户solr 的进程。如果您看到两个或更多进程,尤其是非 java 进程,则您可能正在运行矿工。
【问题讨论】:
-
你配置了什么硬提交间隔?
-
嗨彼得,我附上了完整的配置,硬提交间隔是 180 秒,软提交间隔是 45 秒
-
硬提交和软提交是自动发生的,还是您在索引过程中也触发了 softCommits?
-
了解减速的性质也很重要。当您监控慢速节点时,您是否看到 GC 暂停、I/O 峰值或 CPU 峰值? Solr 在慢速节点和未加载节点上使用了多少堆内存?
-
@Stefan,为什么mergeFactor设置为-1?自从我从事 Solr 工作以来已经有一段时间了,但据我所知,默认值为 10,这个参数决定了分段合并的频率。