gpt4 book ai didi

java - Elasticsearch 5 卡住从磁盘读取

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:02:24 25 4
gpt4 key购买 nike

我有一个由 6 个节点组成的集群,带有 ES 5.44B 小文档 尚未编入索引。
文档按 ~9K 索引 组织,总共 2TB。索引的占用率从几 KB 到数百 GB 不等,它们被分片以将每个分片保持在 20GB 以下

集群健康查询响应:

{
cluster_name: "##########",
status: "green",
timed_out: false,
number_of_nodes: 6,
number_of_data_nodes: 6,
active_primary_shards: 9014,
active_shards: 9034,
relocating_shards: 0,
initializing_shards: 0,
unassigned_shards: 0,
delayed_unassigned_shards: 0,
number_of_pending_tasks: 0,
number_of_in_flight_fetch: 0,
task_max_waiting_in_queue_millis: 0,
active_shards_percent_as_number: 100
}

在向集群发送任何查询之前,它是稳定的,并且每秒获取一个包含 10 个或几千个文档的批量索引查询,没有问题。

一切都很好,直到我将一些流量重定向到这个集群。一旦它开始响应,大多数服务器开始以 250 MB/s 的速度从磁盘读取数据,导致集群无响应: enter image description here

奇怪的是我在 AWS 上克隆了这个 ES 配置(相同的硬件,相同的 Linux 内核,但不同的 Linux 版本)并且我没有问题: enter image description here注意:请注意,40MB/s 的磁盘读取速度是我在服务流量的服务器上一直拥有的速度。

相关的 Elasticsearch 5 配置是:

  • Xms12g -Xmx12gjvm.options

我也用以下配置测试了它,但没有成功:

  • bootstrap.memory_lock:true
  • MAX_OPEN_FILES=1000000

每台服务器有16个CPU和32GB内存;一些有 Linux Jessie 8.7,其他有 Jessie 8.6;都有内核 3.16.0-4-amd64。

我用 localhost:9200/_nodes/stats/indices/query_cache?pretty&human 检查了每个节点上的缓存,所有服务器都有相似的统计数据:缓存大小、缓存命中、未命中和逐出。

这似乎不是一个预热操作,因为在 AWS 克隆集群上我从未见过这种行为,也因为它永远不会结束。
我在 /var/log/elasticsearch/* 下找不到有用的信息。

我做错了什么吗?
我应该改变什么来解决这个问题?

谢谢!

最佳答案

您可能需要减少搜索的线程数。尝试使用 2 倍的处理器数量。在 elasticsearch.yaml 中:

threadpool.search.size:<size>

此外,对于 6 节点集群来说,这听起来像是分片过多。如果可能,我会尝试减少它。

关于java - Elasticsearch 5 卡住从磁盘读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45186965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com