好的想法是十分钱一打,真正无价的是能够实现这些想法的人。

bulk队列大小设置相关的问题

Elasticsearch | 作者 code4j | 发布于2018年04月10日 | 阅读数:6366

前一阵子因为日志系统写es过于缓慢,把写接口改造成使用异步方式(TransportClient 里面的async,不用等待es写完就返回),调用方快了很多,qps也就上来了,但是没注意bulk的线程模型,我设置了16线程 1000 队列长度,结果发生reject了。
 
 
我想通过调大队列长度缓解上游写的压力,但是这个队列也是占内存的,一般设置多大比较好?这个队列里面每个元素的大小就等于我一个批量请求数据的大小吗?假设我批量一次写1m,也就是说极端情况如果队列堆积了100个元素,那就会占用1G的内存?(甚至应该多,因为肯定还有其他元数据信息)
 
不想改回到同步,如果改回同步的方式写,速度又太慢,日志堆积又会太多。
 
已邀请:

yayg2008

赞同来自: medcl code4j

使用默认值就好,写入慢需要优化写入方式,而不是企图改队列大小。
优化方式参考 https://elasticsearch.cn/question/3896 我的回复。

要回复问题请先登录注册