今天,我发现我的es cluster
索引文档非常缓慢且不稳定。
我添加了一些日志来计算调用bulk
api
。
public void execute() throws Exception {
logger.info("begin call es bulk api");
long startTime=System.currentTimeMillis();
try {
BulkResponse bulkResponse = bulkRequestBuilder.execute().actionGet();
if (bulkResponse.hasFailures()) {
throw new EventDeliveryException(bulkResponse.buildFailureMessage());
}
} finally {
bulkRequestBuilder = client.prepareBulk();
}
logger.info("end es bulk api,time:"+(System.currentTimeMillis() - startTime));
}
从日志中。
end es bulk api,time:100
end es bulk api,time:1121
end es bulk api,time:56785
end es bulk api,time:16201
end es bulk api,time:401
end es bulk api,time:87543
我发现es有时索引文档很慢。
我使用api curl 'localhost:9200/_cat/thread_poolv&h=id,host,bulk.size,bulk.active,bulk.rejected,bulk.completed,bulk.queueSize,bulk.queue'
并找到active.bulk
和buld.queue
都少于2。
我使用命令top
和iotop
找到cpu使用情况,而磁盘io都非常小。
如何找出问题所在? 谢谢
编辑:
示例文档:
{"name":"name1","address":"address1"}
,所有文档都是这样的。
没有经过分析的字段。
以下是我的群集设置的一部分:
cluster.routing.allocation.same_shard.host: true
bootstrap.mlockall: true
discovery.zen.ping.unicast.hosts: ["ip1:9302","ip2:9304"]
总内存:15G 总节点数:3 每个节点有2个节点,1个主堆大小1g,1个datanode堆大小5g 批量:200