美文网首页
生产环境 Elasticsearch TimeoutExcep

生产环境 Elasticsearch TimeoutExcep

作者: fumingjiang | 来源:发表于2019-03-06 15:44 被阅读0次

背景:

生产环境有一个api 产品使用到Elasticsearch,根据需求,需要上线一个新功能,当新上线的代码从预发布切换到生产环境后,日志显示Elasticsearch操作异常,具体错误信息:

ElasticsearchTimeoutException[java.util.concurrent.TimeoutException: Timeout waiting for task.]; nested: TimeoutException[Timeout waiting for task.];

        at org.elasticsearch.action.support.AdapterActionFuture.actionGet(AdapterActionFuture.java:71)

        at org.elasticsearch.action.support.AdapterActionFuture.actionGet(AdapterActionFuture.java:63)

        at org.elasticsearch.action.ActionRequestBuilder.get(ActionRequestBuilder.java:69)

       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

        at java.lang.Thread.run(Thread.java:748)

Caused by: java.util.concurrent.TimeoutException: Timeout waiting for task.

        at org.elasticsearch.common.util.concurrent.BaseFuture$Sync.get(BaseFuture.java:232)

        at org.elasticsearch.common.util.concurrent.BaseFuture.get(BaseFuture.java:67)

        at org.elasticsearch.action.support.AdapterActionFuture.actionGet(AdapterActionFuture.java:69)

引发报错的操作:

    Update Es 中一个index1 中的一条记录。

排查过程:

1.因为是上线一个新功能,初步怀疑是代码问题,但代码中ES工具类没有做改动,排除

2.查看生产日志,发现报错elasticsearch EsRejectedExecutionException[rejected execution (queue capacity 1000),怀疑是队列数满了引起的等待超时,因为是update 操作,调整ES bulk 的queue大小,设置为1000,重新发布,未能解决,还是超时。

3.查看es日志,没有发现ERROR级别日志,排除。

4.代码屏蔽,把报错的index 相关操作的代码屏蔽掉,上线功能,还是报错。。。无语了。。。

5.呼叫外援,冲天开始定位问题。查看es日志,发现

[2019-03-05T21:28:41,220][INFO ][o.e.c.m.MetaDataMappingService] [node-3] [partneruser/ANfhxm12Qp61cApLZigiow] update_mapping [13281]

[2019-03-05T21:28:58,299][INFO ][o.e.c.m.MetaDataMappingService] [node-3] [partneruser/ANfhxm12Qp61cApLZigiow] update_mapping [14901]

Es master节点存在mapping 操作,耗时很久。重新查看代码,发现网es插入的信息中新增了一些字段,mapping 文件中并没有手动创建过这些字段,造成Es 在自动mapping。继续查看时间点,生产日志报错时间和es mapping 时间吻合。定位问题。

解决方案:

1。新增加的字段不写入Es.

总结:

        生产环境es 配置建议

1.关闭自动mapping 功能,方便定位问题。

2.调整bulk queue大小,一般改成1000 基本够用

相关文章

网友评论

      本文标题:生产环境 Elasticsearch TimeoutExcep

      本文链接:https://www.haomeiwen.com/subject/deatpqtx.html