Я строю модели данных с помощью приложения под названием Sisense на Linux. В последнее время процесс завершается с ошибкой отсутствия памяти. Запустив 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, где вы можете видеть уменьшение памяти в центральной колонке "free". Как только свободная память стала меньше 235 МБ, я увидел вышеупомянутое исключение.

Вот использование памяти в linux util

На man-странице free util есть следующие определения свободной и доступной памяти:

свободная неиспользуемая память (MemFree и SwapFree в /proc/meminfo)

доступная Оценка того, сколько памяти доступно для запуска новых приложений, без свопинга. В отличие от данных, предоставляемых полями cache или free, это поле учитывает кэш страниц, а также то, что не все восстанавливаемые планки памяти будут восстановлены из-за используемых элементов (MemAvailable в /proc/meminfo, доступно на ядрах 3.14, эмулируется на ядрах 2.6.27+, в остальном аналогично free

.

Как я читаю в интернете, кажется, что о малом количестве свободной памяти говорят вскользь. Что это не проблема. Но сбой совпадает с тем, что свободной памяти становится мало. Если я правильно понимаю страницу руководства, доступная память предназначена для запуска новых приложений. Тогда я предполагаю, что доступная память недоступна для существующего приложения, которое терпит неудачу, и что свободная память действительно имеет значение. Но любое подтверждение от других или дополнительное объяснение было бы признательно. Мне также было бы интересно узнать мнение о том, может ли это представлять собой утечку памяти или мне следует просто выделить больше памяти каким-то образом, возможно, на уровне Linux.

Kierk

Ответов: 1

Ответы (1)

Я думаю, что я достаточно понимаю. Свободная память никогда не опускается ниже 200 МБ независимо от того, провалилась сборка или удалась. Это не является индикатором проблемы. Успешная сборка также покажет снижение объема свободной памяти до 200 МБ.

2022 WebDevInsider