我们使用ArangoDB 3.3.14(社区版)和MMFiles存储引擎处理相对较大的数据集(备份时略大于30 GB)。我们在ECS中使用docker容器运行它。我们的主机VM有64 GB的RAM,我们专门为ArangoDB容器分配了55 GB的RAM(我们为该容器设置了硬限制为55 GB)。
当ArangoDB刚启动并将所有集合加载到RAM中时,大约需要45 GB,因此我们还有大约10 GB的空闲RAM可用于查询等操作。
问题在于,经过一段时间后(根据使用情况而定),ArangoDB会吃掉所有的55 GB RAM,并且不会停止。它继续消耗超出设置的硬限制的RAM,在某个点上,docker会以退出码137杀死容器,状态原因为OutOfMemoryError:Container killed due to memory usage。
重新启动会给我们带来很多问题,因为我们需要等待所有集合和图形再次加载到RAM中。对于我们的数据集,这需要大约1-1.5小时,而在“重新启动”期间无法使用ArangoDB。
我的问题是如何限制ArangoDB的RAM使用量,比如说限制为54 GB,这样它就永远不会达到docker容器设置的硬内存限制?
当ArangoDB刚启动并将所有集合加载到RAM中时,大约需要45 GB,因此我们还有大约10 GB的空闲RAM可用于查询等操作。
问题在于,经过一段时间后(根据使用情况而定),ArangoDB会吃掉所有的55 GB RAM,并且不会停止。它继续消耗超出设置的硬限制的RAM,在某个点上,docker会以退出码137杀死容器,状态原因为OutOfMemoryError:Container killed due to memory usage。
重新启动会给我们带来很多问题,因为我们需要等待所有集合和图形再次加载到RAM中。对于我们的数据集,这需要大约1-1.5小时,而在“重新启动”期间无法使用ArangoDB。
我的问题是如何限制ArangoDB的RAM使用量,比如说限制为54 GB,这样它就永远不会达到docker容器设置的硬内存限制?
--javascript.gc-frequency frequency
吗?这可能会减少费用,如果没有答案提供。或者阅读 https://dev59.com/4GAf5IYBdhLWcg3wsUXT - Gilles-Antoine Nys