使用 nohup 或 disown 如果你要让某个进程运行在后台。

ES数据写入方面有没有什么好的限流的办法?

Elasticsearch | 作者 wangxinrong | 发布于2020年12月18日 | 阅读数:3060

ES本身对写入速度有没有办法做限制呢,我目前了解的似乎没有什么好办法。
 
如果不能的话,那么对于写入es的应用来说,有没有什么好的手段限流呢,我目前了解到的也没有什么办法能精确的控制写入的速率或者是带宽。只能是在bulk actions、bulk size,还有应用的写入并发这些参数上做调整,效果不可控。
 
在这方面,有没有什么比较好的解决方式呢?
已邀请:

keyso

赞同来自:

加层nginx限流

tianqi

赞同来自:

使用Medcl大神开源的INFINI Gateway

wangxinrong

赞同来自:

我的理解是限流需要应用层面一起考虑。
 
比如es本身就有write queue,超过大小会reject。这个就是es自己的一个限流功能,但是如果应用在写数据时,遇到reject就丢弃了,那么在es出现write reject的时候,应用就认为es已经挂了,丢数据了,es服务异常。
 
那么在前面加nginx或者是INFINI Gateway的话,这些网关能做到把流量限制在一个比较精确的范围,但是超出的被限流的部分,应该还是会有这样的问题,这些网关会返回什么结果,应用应该怎样处理,如果不对这些情况单独处理,直接认为异常,应用仍然会认为es已经出现了问题。
 
但是如果需要应用这一侧配合的话,不同的应用要求又不同。有些应用支持数据延时写入,只要不丢就行。有些即使最终写入了,如果延时较大也会影响业务。这块会比较复杂,也不是光在es这一层面就能处理的。
 
其实我想了解的是综合以上情况,怎样有一个比较好的方案。

要回复问题请先登录注册