solr - DSE/Solr : Cannot record QUEUE latency

标签 solr datastax-enterprise datastax-startup

使用 DSE 4.8.7,我们能够每秒将约 1,000 条记录插入到由 Solr 索引的 cassandra 表中。吞吐量有一段时间(可能 30-60 分钟),直到 2-3 个节点(在 5 节点集群中)开始在日志中显示这些消息:

INFO  [datastore.data Index WorkPool work thread-0] 2016-05-17 19:28:26,183  AbstractMetrics.java:114 - Cannot record QUEUE latency of 29 minutes because higher than 10 minutes.

此时,插入吞吐量下降到 2-10 条记录/秒。 重启节点解决问题。集群中所有节点的操作系统负载和 IO 都很低。此外,在查看 nodetool 统计信息时没有待处理的任务。

这个问题几乎是字面上的问题 here ,我是故意这样做的,因为 (a) 这似乎仍然是一个问题,并且 (b) 我无法对这个问题发表评论。

最佳答案

我认为值得在这里发布一个答案,尽管我也以几乎相同的方式回答了以下问题:

Cannot record QUEUE latency of n minutes - DSE

当 Solr 节点在摄取记录时,它不仅要摄取到正常的 Cassandra 写入路径中,还必须将记录摄取到 Solr 写入路径中。 Cassandra 压缩以及 Solr 的等效(Lucene 合并)正在发生。压缩和合并在磁盘 i/o 上都非常昂贵。

默认情况下,dse.yaml 会将设置 max_solr_concurrency_per_core 注释掉,这可能意味着为您的 solr 核心索引分配了太多线程。

@phact 在上面的博客中链接的帖子确实是一个很好的起点。监视 IndexPool mBean 是开始检查的好地方。检查 QueueDepth 并查看其是否增加,如果增加,则节点无法跟上索引吞吐量,以及查看 CPU 和 I/O 的时间。如果您没有看到高 CPU,那么您可能会增加并发性。

在大型集群中,通常高速率的摄取是在具有 Cassandra 节点的 DC 中完成的,这些节点复制到它们自己的 DC 中的 Solr 节点。像这样的拆分工作负载也可能是您的一个不错的考虑因素。

另一件事也是索引的大小,通过在架构中设置 omitNorms=true 来减少文本字段等内容的大小也可以大大减少索引的大小。

我会在下面发布一些可能对您有帮助的文档链接。

https://docs.datastax.com/en/datastax_enterprise/4.8/datastax_enterprise/srch/srchTune.html

https://docs.datastax.com/en/datastax_enterprise/4.8/datastax_enterprise/srch/srchCmtQryMbeans.html

关于solr - DSE/Solr : Cannot record QUEUE latency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37285551/

相关文章:

mysql - 将数据导入处理程序添加到 ColdFusion 2016 Solr

python - Apache Solr 如何与 Django 1.5 配合使用?

cassandra - 在 Cassandra 中禁用提交日志

hadoop - 我们可以使用Hive查询 map 集合吗

java - 是否可以通过 solr 中的特定模式请求字段?

java - 如何使用java获取http参数?

java - MapReduce-Cassandra单词计数编译错误:找不到ConfigHelper

java - datastax java 驱动程序 - 如何为轻量级事务配置 LOCAL_SERIAL

apache-spark - EMR LinkageError 上的 Spark + Cassandra

cassandra - Cassandra 节点上的高磁盘 I/O