Рейтинг:0

Когда обновлять оперативную память на основе свободного вывода

флаг cn

У меня есть Java-приложение, которое работает на сервере Linux с физической памятью (ОЗУ), выделенной как 12 ГБ, где я вижу нормальное использование в течение определенного периода времени, как показано ниже.

sys> бесплатно -h
              общее количество использованных бесплатных общих баффов/доступных кешей
Память: 11 г 7,8 г 1,6 г 9,0 м 2,2 г 3,5 г
Обмен: 0B 0B 0B

В последнее время при увеличении нагрузки на приложение я мог видеть, что использование ОЗУ почти заполнено, а доступного места очень мало, и я могу столкнуться с некоторой медлительностью, но приложение продолжает работать нормально.

sys> бесплатно -h
              общее количество использованных бесплатных общих баффов/доступных кешей
Память: 11 г 11 г 134 м 17 м 411 м 240 м
Обмен: 0B 0B 0B
sys> бесплатно -h
              общее количество использованных бесплатных общих баффов/доступных кешей
Память: 11 г 11 г 145 м 25 м 373 м 204 м
Обмен: 0B 0B 0B

я упомянул https://www.linuxatemyram.com/ где он предложил следующую точку.

Предупреждающие знаки реальной ситуации с нехваткой памяти, которую вы, возможно, захотите изучить:

  • доступная память (или «свободная + буферы/кеш») близка к нулю
  • используемый своп увеличивается или колеблется.
  • dmesg | grep oom-killer показывает работу убийцы OutOfMemory

Из приведенных выше пунктов я не вижу никаких проблем с OOM на уровне приложения, и своп также был отключен. так пренебрегая двумя пунктами. Один момент, который меня беспокоит, это то, что доступная память меньше нуля, где мне нужно разъяснение.

Вопросы:

  1. Если доступное значение близко к 0, это приведет к сбою системы?
  2. Означает ли это, что мне нужно обновить оперативную память, когда доступной памяти становится меньше?
  3. На каком основании следует выделять/увеличивать оперативную память?
  4. Есть ли у нас какие-либо официальные рекомендации/рекомендации, которым необходимо следовать при распределении оперативной памяти?
Nikita Kipriyanov avatar
флаг za
Где вы видите "доступной памяти меньше нуля"?
флаг br
Вы недавно перезагружались? иногда приложения просто продолжают использовать память, но если вы перезапустите, они часто возвращаются к более низкому использованию.
Michael Hampton avatar
флаг cz
Java по умолчанию не освобождает память кучи для ОС в большинстве случаев, даже если она больше не использует ее. Прежде чем отправиться покупать больше оперативной памяти, профилируйте приложение, чтобы увидеть, сколько памяти оно действительно использует.
ragul rangarajan avatar
флаг cn
@NikitaKipriyanov упоминается в этой статье https://www.linuxatemyram.com/ в разделе «Когда мне начинать беспокоиться?»
ragul rangarajan avatar
флаг cn
@ Chopper3 Перезагрузка не производилась. Я заметил, что ваша точка памяти снижается при перезагрузке и продолжает увеличиваться в ближайшие дни. Если приложение должно служить своей цели для клиента, его перезапуск приведет к простою, что не будет правильным случаем, верно?
ragul rangarajan avatar
флаг cn
@MichaelHampton Профиль приложения Hope означает максимальное выделение кучи для приложения, которое настроено как 50% ОЗУ (6 ГБ).
Рейтинг:1
флаг cn

Возможность получить ответ на один мой вопрос

Если доступное значение близко к 0, это приведет к сбою системы?

При тестировании на одном из моих серверов, где я загрузил память почти полностью, как показано ниже.

sys> бесплатно -h
              общее количество использованных бесплатных общих баффов/доступных кешей
Память: 11 г 11 г 135 м 25 м 187 м 45 м
Обмен: 0B 0B 0B

Возможность увидеть, как одно только мое приложение (которое потребляло больше памяти) было убито убийцей нехватки памяти, о котором можно упомянуть в журналах ядра.

dmesg -e

[355623.918401] [21805] 553000 21805 69 21 2 0 0 п.м.
[355623.921381] Недостаточно памяти: завершить процесс 11465 (java) с оценкой 205 или пожертвовать дочерним элементом
[355623.925379] Убитый процесс 11465 (java), UID 553000, total-vm: 6372028kB, anon-rss: 2485580kB, file-rss: 0kB, shmem-rss: 0kB

https://www.kernel.org/doc/gorman/html/understand/understand016.html

Убийца нехватки памяти или OOM Killer — это процесс, который ядро ​​Linux использует, когда в системе критически мало памяти. Эта ситуация возникает из-за того, что ядро ​​Linux имеет слишком много памяти, выделенной для его процессов. ... Это означает, что запущенным процессам требуется больше памяти, чем доступно физически.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.