elasticsearch - 增加 ElasticSearch 中的队列容量
问题描述
弹性版本 7.8
为数千条记录运行此代码时出现错误:
var bulkIndexResponse = await _client.BulkAsync(i => i
.Index(indexName)
.IndexMany(bases));
if (!bulkIndexResponse.IsValid)
{
throw bulkIndexResponse.OriginalException;
}
它最终崩溃并出现以下错误:
Invalid NEST response built from a successful (200) low level call on POST: /indexname/_bulk
# Invalid Bulk items:
operation[1159]: index returned 429 _index: indexname _type: _doc _id: _version: 0 error: Type:
es_rejected_execution_exception Reason: "Could not perform enrichment, enrich coordination queue at
capacity [1024/1024]"
我想知道如何增加这种丰富的协调队列容量,以适应 BulkAsync 的连续调用,每次调用大约有一千条记录。
解决方案
您可以检查什么 thread_pool 已满,/_cat/thread_pool?v
并在 elasticsearch.yml 中为每个节点增加队列(如忍者所说)。
但增加队列大小会影响堆消耗,随后可能会影响性能。
当您收到此错误时,可能有两个原因。首先,您要发送大批量请求。尝试将批量请求减少到 500 或更低。其次,您有一些性能问题。尝试找到并解决问题。也许您应该向集群添加更多节点。
推荐阅读
- r - 如何绘制原始数据,但在 ggplot2 R 中使用线拟合的预测值?
- php - Php:符号链接的层级太多?
- java - EMR Spark java应用GC问题
- javascript - 反应加载微调器+ Redux?
- php - 使用 Symfony 4 将用户重定向到匿名用户的登录页面
- nginx - 每个http方法的nginx client_max_body_size
- elasticsearch - ElasticSearch 中的模板
- android - BroadcastReceiver 在模拟器上工作但不在我的设备上
- grafana - 在 Group By 语句中计算值
- angular - 如何在角度选择选项中添加未定义的值