2016-03-31 5 views
2

У меня около 8 API JAR и 4 из весеннего облака (Zuul, Hystrix, Config-Server, Eureka). Я запускаю все банки на одном сервере прямо сейчас, хотя мы будем увеличивать свое время позже при выходе на производство.Ошибка памяти во время выполнения JAR

Сервер AWS Linux имеет память 16 ГБ. Проблема, с которой я столкнулась, заключается в том, что по какой-то причине у сервера постоянно заканчивается память, и когда я пытаюсь выполнить Jar, я становлюсь ниже ошибки.

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x000000078fb80000, 293601280, 0) failed; error='Cannot allocate memory' (errno=12) 

Ошибка не относится к конкретным баночкам случайным образом.

памяти с сервера (в настоящее время у меня есть 9 банок развернутые): -

free -m 

      total  used  free  shared buff/cache available 
Mem:   15630  13684  1835   17   110  1781 

Кто-нибудь сталкивался с подобной проблемой. Может предоставить дополнительную информацию, если требуется какая-либо другая информация.

Любая помощь будет оценена по достоинству.

+0

Вы можете попробовать сделать Flight Recording, java -XX: StartFlightRecording = settings = profile, filename = record.jfr, dumponexit = true (JDK8u40) и открыт в Java Mission Control. JFR может столкнуться с проблемой в OOM, но много раз она будет успешной. Посмотрите на статистику объектов, чтобы узнать, какие объекты заполняют кучу, или статистика распределения (если есть очень большие объекты), или информация о собственной памяти, сборка мусора и т. Д. Могут дать ключ, –

ответ

1

Я добавил аргументы java к заданиям выполнения, которые, кажется, решают проблему.

ява -Xmx64m -Xss256k -jar abc.jar

После этого, даже если я имел 13 банок развернуты на тот же сервер, я имел 10GB стоит памяти осталась и который был 1.7GB, прежде чем я добавил аргументы ,

памяти Перед тем как аргументы JAVA:

free -m 

       total  used  free  shared buff/cache available 

Mem:   15630  13684  1835   17   110  1781 

памяти После того, как Java Аргументы:


free -m 

       total  used  free  shared buff/cache available 

Mem:   15630  4927  8769   25  1932  10373 
2

Это обычно происходит, когда JVM пытается использовать больше памяти и доступен, и ОС отказывается после запуска программы. Я бы попытался уменьшить размер кучи, чтобы дать системе больше свободной памяти.

У вас почти нет используемого буфера/кеша, которые подсказывают мне, что бывают случаи, когда ваша свободная память меньше этого размера. (Только не когда вы взяли этот образец)

Сколько свободного пространства подкачки занимает эта машина?

+0

Я не являюсь пользователем сервера, и как это сделать Я проверяю пространство подкачки ... Я только что изменил команду выполнения, чтобы проверить на сервере -> ** java -Xmx64m -Xss256k -jar jarname.jar ** позволяет посмотреть, как это происходит. –

+0

@Grinish Проблема в том, насколько свободна память в системе. Небольшая программа может выйти из строя, если не хватает свободной памяти (даже на мгновение) –

+0

Согласен.Проблема в основном заключается в том, что не стоит так много использовать, но при этом использует много памяти ... на основе этой статьи https://spring.io/blog/2015/12/10/spring-boot-memory- производительность У меня должно быть много свободного места на моей машине ... –

Смежные вопросы