es 在并发写入的情况下,为啥会出现部分数据丢失的情况?
1
90928yao 2020-09-14 16:11:23 +08:00
压测的时候?
|
2
des 2020-09-14 16:18:39 +08:00
看看有没有报错什么的,es 的内部队列满了会暂时拒绝请求
|
4
a7217107 OP 用的 x-pack
|
5
Macuilxochitl 2020-09-14 17:18:41 +08:00
关注一下错误率
|
6
wakzz 2020-09-14 17:21:46 +08:00
贴一下返回的报错报文以及 es 的报错日志
|
7
yoqu 2020-09-14 17:27:59 +08:00
建议通过消息队列异步入 es
|
8
gtexpanse 2020-09-14 17:36:32 +08:00
只要涉及到写入 es 的,就一定要关注写入失败的情况,参考:
`_cat/thread_pool?v` |
9
kefirzhang 2020-09-14 17:50:51 +08:00
再没有写入 ack 确认,失败重试的情况下,如果高并发写入达到 es 瓶颈肯定会拒绝后续请求造成数据丢失。
可以采用写到 redis 的队列里面用 logstash 读取。或者写到 kafak 里面 , 其实原理一样 写到一个缓存队列,削峰填谷! |
10
manaBurn 2020-09-14 18:01:08 +08:00
如果是同一个文档,是因为 es 的乐观锁机制造成的版本冲突吧?
|