【问题标题】:Why does Elasticsearch bulk index API creates documents after long time?为什么 Elasticsearch 批量索引 API 长时间创建文档?
【发布时间】:2016-09-22 17:44:55
【问题描述】:

我有一个带有两个节点的 Elasticsearch 集群。使用 Node js 批量插入 API,我使用以下代码将流数据作为每次插入的 1000 个文档批量插入,

esclient1.bulk({
  body: messages
}, function (err, resp) {
  //handle resp
});

消息会发布到服务器,但文档会在一两个小时后创建。不知道为什么会这样延迟。

每个批量插入总共有 200 万条记录被分成 1000 条记录。即使在 24 小时后,文档仍在被索引。请让我知道问题可能出在哪里。

我们使用 AWS EC2 m3.large(7.5 GB RAM,32 GB SSD 存储)x 2

Kibana 状态显示堆总数 (MB) - 652.92 和堆已用 (MB) - 631.56。这是索引创建缓慢的原因吗?

【问题讨论】:

  • 堆总数:652.92 是什么意思?那是为 7.5GB 盒子上的 es-instance 分配的堆吗?

标签: node.js elasticsearch


【解决方案1】:

检查bulk线程池,在节点统计下

http://your_server_id:9200/_nodes/stats/thread_pool

在那里检查queue 的大小。如果队列中有太多请求,那么您没有足够的线程来处理所有批量索引请求。

线程数是根据可用的 cpu 核心数分配的。 https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-threadpool.html

用于索引/删除操作。线程池类型是固定的 # 可用处理器的大小,queue_size 为 200。

我还会检查指数统计数据

http://your_server_ip:9200/_nodes/stats/indices

专门检查索引、合并和分段下的数字,看看有没有什么突出的。

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 2016-04-06
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 2016-04-16
    • 1970-01-01
    相关资源
    最近更新 更多