Elasticsearch - 在稳定数周后所有分片都失败了

问题描述 投票:0回答:1

我的公司正在生产环境中运行 Elasticsearch dockerized。它是我们主要应用程序中非常重要的组成部分。

docker run --detach \
    --name elastic \
    --network xxx \
    --expose 9200 \
    --env TZ="Europe/Warsaw" \
    --volume /docker/elastic:/usr/share/elasticsearch/data \
    --restart always \
    --env discovery.type="single-node" \
    --env xpack.security.http.ssl.enabled="true" \
    --env xpack.security.transport.ssl.verification_mode="none" \
    --env xpack.security.enabled="false" \
    --env xpack.security.enrollment.enabled="false" \
    --env indices.query.bool.max_clause_count="10240"  \
    --memory 8g \

初始部署几周后,我们在中午遇到了一堵持续几分钟的错误,中断了我们的主要服务。 DD snippet

错误:

jakarta.servlet.ServletException: Request processing failed: java.util.concurrent.CompletionException: org.springframework.data.elasticsearch.UncategorizedElasticsearchException: [es/search] failed: [search_phase_execution_exception] all shards failed

当我们测试 ES 几个月时,它从未发生过。 我们使用 2 个索引(每个索引 1 个分片),它们没有太多数据(可能都是 200mb),但经常被查询。

这可能是什么原因?是否弹性运行一些内部流程,如果可以,可以将它们安排在不同的时间(晚上)。将索引重新制作成 2 个或更多分片是否有助于将来解决这个问题,即使它们很小? 任何帮助表示赞赏。

什么也没尝试。不知道如何重现此错误。

database elasticsearch nosql
1个回答
0
投票

您应该提供有关您的弹性集群的更多信息,最好也分担 JVM 内存压力。

我想到的第一件事是您使用过多的 Scroll API 或 Search After using (Point in a time) 这会导致内存溢出并导致 Elastic 不稳定。

最好的选择是检查内存压力,如果达到 80% 左右,则增加压力。

© www.soinside.com 2019 - 2024. All rights reserved.