美文网首页
节点快速失联重连导致的shard失败, failed to ob

节点快速失联重连导致的shard失败, failed to ob

作者: 以梦为马驾驾驾 | 来源:发表于2023-03-30 10:47 被阅读0次

    发现问题


    image.png image.png image.png

    shard属于unassign的状态, 直接的信息可以看到是failed to create shard. failed to obtain in-memory shard.
    shard只有在拥有shard的节点关机重启(与master失去联系, 即master不知道shard的状态才会被重新分配).
    所以表象问题有两个:

    1. shard为什么会重新分配? 如果是节点重启, 为什么?
    2. shard为什么不能被创建?

    通过查看日志, 得知此节点由于负载过高, full-gc时间过长, 而导致与master的心跳中断, 但是gc结束后, 又迅速重新加入的集群 , 而节点的此shard上正在被关闭, 且一直没有成功关闭.

    获取锁的代码: org.opensearch.index.IndexService#createShard. 获取锁失败的根因是因为: closing shard 持有着锁, 且没有放弃. 导致create在超过约定的重试次数后就不再创建了.

    由于没有开debug日志, 没有关于为什么close shard的日志.

    为什么负载高, 在节点离开集群前, 看到有两个执行了十几秒的查询, 而后在这个shard上还有2m的查询, 应该是它们导致的负载变高

    解决:

    /_cluster/reroute?retry_failed=true

    不会丢失数据, 触发重新分配.

    或者重启节点, 就可以释放掉内存锁.但是可能部分丢失数据

    GET /_cat/indices?v&health=yellow

    查看处于亚健康的index

    GET _cluster/allocation/explain

    查看为什么分配失败, 原因是什么, 就不用查日志了.

    参考:

    https://aws.amazon.com/cn/premiumsupport/knowledge-center/opensearch-in-memory-shard-lock/

    https://elasticsearch.cn/question/3998

    https://github.com/elastic/elasticsearch/issues/23199

    image.png

    相关文章

      网友评论

          本文标题:节点快速失联重连导致的shard失败, failed to ob

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