gpt4 book ai didi

docker - 如何限制 docker 容器内的 ArangoDB RAM 使用量?

转载 作者:行者123 更新时间:2023-12-02 07:25:42 24 4
gpt4 key购买 nike

我们使用带有 MMFiles 存储引擎的 ArangoDB 3.3.14(社区版)来处理相对较大的数据集(备份时会超过 30 GB)。我们使用 ECS 在 Docker 容器内运行它。我们的主机虚拟机有 64 GB 的 RAM,并且我们专门为 ArangoDB 容器提供了 55 GB 的 RAM(我们将该容器的硬限制设置为 55 GB)。

当 ArangoDB 刚刚启动并将所有集合加载到 RAM 中时,大约需要 45 GB,因此我们有大约 10 GB 的可用 RAM 用于查询等。

问题是,在一段时间后(取决于使用情况)ArangoDB 会吃掉所有 55 GB RAM,并且不会就此停止。它继续消耗超过设置的硬限制的 RAM,并且在某个时刻,docker 会终止容器,退出代码为 137,状态原因为 OutOfMemoryError:容器因内存使用而终止。

重启给我们带来了很多问题,因为我们需要等待所有集合和图表再次加载回 RAM。我们的数据集大约需要 1-1.5 小时,并且在“重新启动”时您无法使用 ArangoDB。

我的问题是如何限制 ArangoDB RAM 使用量(假设为 54 GB),这样它就永远不会达到为 docker 容器设置的硬内存限制?

最佳答案

在 3.3.20 中,ArangoDB 引入了限制写入缓冲区的参数 {{total-write-buffer-size}}。您可以尝试将其添加到您的配置文件中:

[rocksdb]
block-cache-size = <value in bytes> # 30% RAM
total-write-buffer-size = <value in bytes> # 30% RAM
enforce-block-cache-size-limit = true

[cache]
size = <value in bytes> # 20% RAM

或者您可以将参数传递到命令行:

arangod --cache.size <value in bytes>  # 20% RAM \
--rocksdb.block-cache-size <value in bytes> # 30% RAM \
--rocksdb.total-write-buffer-size <value in bytes> # 30% RAM \
--rocksdb.enforce-block-cache-size-limit true

您还可以根据您的使用情况调整为每个组件分配的内存量。但你必须至少升级到3.3.20。

关于docker - 如何限制 docker 容器内的 ArangoDB RAM 使用量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54416790/

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