0

我正在通过 Linux 上名为 Sisense 的应用程序构建数据模型。最近该过程因内存不足错误而失败。运行free -h我看到当可用内存不足时发生故障,但在它实际达到零之前,即使仍有大量可用内存。

这是一个例外:

Failed to build custom table: Rule_pre; BE#521691 SQL error: SafeModeException:
Safe-Mode triggered due to memory pressure. Pod physical memory: 5.31 GB available, 2.87 GB 
used, 8.19 GB total. Server physical memory: 4.86 GB available, 28.67 GB used, 
33.54 GB total. Application total virtual memory: 2.54 GB. The server exceeded 85% capacity 
(28.67/33.54). Possible ways to reduce memory pressure: increase server memory, adjust data 
modelling (M2M, un-indexed string fields, etc.), reduce number of simultaneous queries

这是free -h您可以在中心“空闲”列中看到内存下降的输出。一旦可用内存低于 235 MB,我就会看到上述异常。

这是每个 linux util 的内存使用情况

free util 手册页对可用内存和可用内存有以下定义:

释放 未使用的内存(/proc/meminfo 中的 MemFree 和 SwapFree)

available 估计有多少内存可用于启动新应用程序,无需交换。与缓存或空闲字段提供的数据不同,该字段考虑了页面缓存,并且由于正在使用的项目,并非所有可回收的内存块都会被回收(MemAvailable in /proc/meminfo,可在内核 3.14 上使用,在内核 2.6.27+,否则与免费相同

正如我在互联网上所读到的,似乎对可用内存不足感到随意。这不是问题。但失败恰逢可用内存变低。如果我了解手册页,则可用内存用于启动新应用程序。我假设可用内存不适用于失败的现有应用程序,而可用内存确实很重要。但任何其他人的确认或额外的解释将不胜感激。我也很想知道这是否会构成内存泄漏,或者我是否应该简单地在 Linux 层以某种方式分配更多内存。

4

1 回答 1

0

我想我对这里有足够的了解。无论构建失败还是成功,可用内存都不会低于 200MB。它似乎不是问题的指标。成功的构建还将显示可用内存下降到 200MB。

于 2021-01-02T14:37:17.897 回答