|
2019-05-17
这篇文章主要讨论一下ElasticSearch文档写入的关键步骤以及在使用ES Client使用过程的一些需要主要的问题。
注意点
Es Client(<6.8.5 和 <7.5 )自身的死锁
1.ES Client的内置scheduler线程池定时调用线程A来flush()数据 2.线程A阻塞等待数据写入任务,写入数据网络异常会尝试retry(),retry()也是放入scheduler线程池中执行 3.但scheduler线程池的coreSize=1,线程A正在使用此线程,导致retry()任务一直阻塞等待空闲线 4.Retry()任务不执行,那么线程A的flush()任务也一直卡死等待
ES issue:
https://github.com/elastic/elasticsearch/issues/47599
https://github.com/elastic/elasticsearch/issues/44556
ES 客户端bulkIndex流程细节,如下:
ES 6.8.5/7.5 如何修复上述DeadLock?官方采用:初始化两个scheduler,分别给flush() 和retry()来使用
https://github.com/jakelandis/elasticsearch/commit/b7b59329c247ff61715f21f5c0f409a059249909
编辑:航网科技 来源:腾讯云 本文版权归原作者所有 转载请注明出处
微信扫一扫咨询客服
全国免费服务热线
0755-36300002