У меня есть уникальная ситуация, когда приложение Java, которое я написал, задыхается, когда оно разветвляется и создает некоторые дочерние процессы. Согласно журналам ошибок я вижу, что есть java.lang.UNIXProcess выделяет пространство для родительского и дочернего процессов вне JVM в пространстве подкачки системы. Ошибки генерируются, потому что недостаточно места подкачки для одновременного размещения родительского и дочернего процессов.

Системы бросают приступы и не хотят увеличивать пространство подкачки без веской причины, поэтому я пытаюсь выяснить, есть ли какие-то мошеннические процессы, которые поглощают доступное пространство подкачки в то же время, когда происходит разветвление. Если я смогу доказать, что пространство подкачки необходимо увеличить для обработки моих родительских / дочерних процессов, а также чего-то еще, что требуется для работы систем (например, сканирование безопасности и т.д.), Тогда я смогу получить свой билет и пойти домой.

Что бы сделал SuperUser?

Изменить: я должен отметить, что эти ошибки происходят только на нашей общей машине контроля качества, на которой запущено много других проектов / приложений. На нашей изолированной машине разработки это работает как чудо, и эта машина разработки является зеркалом контроля качества с точки зрения аппаратного обеспечения / виртуальной памяти / диска. Так что, если передать dev и дать сбой в QA, это явно указывает на то, что мое приложение просто борется за пространство подкачки, которое просто недоступно, потому что его использует кто-то другой.

1 ответ1

0

В Solaris не имеет значения, является ли хранилище резервных копий для виртуальной памяти, которую процесс использует или запрашивает, физической памятью или пространством подкачки. Вам нужно посмотреть, сколько памяти используется в масштабе всей системы, а не то, что на самом деле выгружается в то время. Это включает файловую систему /tmp.

ПРИМЕЧАНИЕ. По умолчанию Solaris использует файловую систему на основе памяти для /tmp. Структура файлов и каталогов в /tmp использует виртуальную память из системного пула. Доступное пространство в /tmp определяется объемом виртуальной памяти, доступной для всей системы.

В Solaris 9 и более поздних версиях используйте prstat -c -s size -n <# of processes to show> 0 1 чтобы получить список всех запущенных процессов, отсортированных в порядке убывания по количеству используемой виртуальной памяти. См. Столбец "РАЗМЕР" для определения общей виртуальной памяти, используемой каждым процессом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .