У меня есть 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 на уровне приложения, и своп также был отключен. так пренебрегая двумя пунктами. Один момент, который меня беспокоит, это то, что доступная память меньше нуля, где мне нужно разъяснение.
Вопросы:
- Если доступное значение близко к 0, это приведет к сбою системы?
- Означает ли это, что мне нужно обновить оперативную память, когда доступной памяти становится меньше?
- На каком основании следует выделять/увеличивать оперативную память?
- Есть ли у нас какие-либо официальные рекомендации/рекомендации, которым необходимо следовать при распределении оперативной памяти?