Я вижу, что некоторые из моих сервисов страдают / вылетают из-за ошибок типа «Ошибка выделения памяти» или «Не удается создать новый процесс» и т. Д.
Меня это немного смущает, поскольку журналы показывают, что в то время в системе имеется много свободной памяти (около 26 ГБ в одном случае) доступной памяти, и она не испытывает особых нагрузок по каким-либо другим причинам.
После того, как вы заметили сбой JVM с аналогичной ошибкой с добавленным запросом «Недостаточно места для подкачки?» это заставило меня копнуть немного глубже.
Оказывается, кто-то настроил нашу зону с файлом подкачки 2 ГБ. Наша зона не имеет ограниченного объема памяти и в настоящее время имеет доступ к такой части 128 ГБ оперативной памяти, которая необходима. Наши SA планируют ограничить это 32 ГБ, когда у них появится такая возможность.
Мое текущее мнение заключается в том, что, хотя для выделения ОС достаточно памяти, пространство подкачки кажется сильно уменьшенным (на основе других ответов здесь). Похоже, что Solaris хочет убедиться, что места для подкачки достаточно на случай, если что-то придется поменять (т. Е. Резервирует пространство подкачки).
Правильно ли это мышление или есть какая-то другая причина, по которой я получаю ошибки выделения памяти из-за такого большого количества свободной памяти и, казалось бы, недостаточного пространства подкачки?
В отличие от некоторых других операционных систем, которые реализуют неприятный убийца нехватки памяти или аналогичный, Solaris не перегружает память (если вы не используете очень специфические методы распределения). Когда выполняется регулярное выделение памяти, ОС гарантирует, что эта память будет доступна при необходимости (т. Е. Резервирование). Недостаток в том, что вам необходимо иметь достаточно пространства виртуальной памяти для хранения этой потенциально частично неиспользуемой памяти.
Свободная оперативная память не связана, но учитывается и в размере виртуальной памяти.
При возникновении проблемы посмотрите на вывод "swap -s".
Обратите внимание, что вы можете легко увеличить область подкачки, добавив файлы подкачки или устройства.