Команда Java XMS для увеличения размера кучи не работает правильно - PullRequest
0 голосов
/ 26 ноября 2018

Ubuntu Server, на котором размещены некоторые приложения WAr, получает несколько сообщений об ошибках, как показано ниже.Этот сервер работает на tomcat8 и работал отлично, теперь без каких-либо изменений на стороне кода сервер получает ошибку, и Tomcat останавливается.

    EVERE: SEVERE:Memory usage is low, parachute is non existent, your 
    system may start failing.
Exception: java.lang.OutOfMemoryError thrown from the 
UncaughtExceptionHandler in thread "Thread-21"
Exception: java.lang.OutOfMemoryError thrown from the 
UncaughtExceptionHandler in thread "Thread-9"
Exception: java.lang.OutOfMemoryError thrown from the 
UncaughtExceptionHandler in thread "Thread-17"
SEVERE:Memory usage is low, parachute is non existent, your system may start 
failing.
Exception in thread "Thread-11" java.lang.OutOfMemoryError: Java heap space
Exception in thread "http-nio-8080-Acceptor-0" Exception in thread 
"ContainerBackgroundProcessor[StandardEngine[Catalina]]" Exception in thr 
09:39:19.841 ERROR 116336 --- [nio-8080-exec-5] 
o.s.b.w.servlet.support.ErrorPageFilter  : Forwarding to error page from 
request [/teams/my
java.lang.OutOfMemoryError: Java heap space
SEVERE:Memory usage is low, parachute is non existent, your system may start 
failing.
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space

Я не разработчик, поэтому я не очень разбираюсь в Java(основные вещи).Сначала я подумал, что это связано с оперативной памятью (4 ГБ на сервере), но потом я прочитал во многих местах, что в значительной степени связано с максимальным размером кучи Java.Поэтому я запустил следующую команду и проверил, что у меня есть 65 МБ для начального размера и 1 ГБ для максимального.

java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
 intx CompilerThreadStackSize                   = 0                                   {pd product}
uintx ErgoHeapSizeLimit                         = 0                                   {product}
uintx HeapSizePerGCThread                       = 87241520                            {product}
uintx InitialHeapSize                          := 65011712                            {product}
uintx LargePageHeapSizeThreshold                = 134217728                           {product}
uintx MaxHeapSize                              := 1031798784                          {product}
 intx ThreadStackSize                           = 1024                                {pd product}
 intx VMThreadStackSize                         = 1024                                {pd product}

Теперь я хочу увеличить максимальный размер до 2 ГБ и установить его таким образом.Я проверил в этом посте здесь и рассказывает о команде для этого, но когда я запускаю ее на консоли, я не могу этого сделать.Вот команда:

 java -Xms64m -Xmx2048m

Я понимаю, что синтаксис команды не в порядке

Usage: java [-options] class [args...]
       (to execute a class)
   or  java [-options] -jar jarfile [args...]
       (to execute a jar file)

Также читайте этот ответ, но не совсем ясно

Также я читаю вслух редактирование catalina.sh, но если я vim этой командой, я не получаю никакой части, где размер кучи или Xms можно редактировать, поэтому вопрос будет:

Также прочитайте это но я не хочу устанавливать это для любой банки, хочу сделать это для всех военных приложений на сервере.

Итак, прочитав так много постов и ответов, и не имея лучших знанийв Java, как это лучший способ сделать это?Как правильная команда?после запуска этой команды максимальный размер кучи настроен на хорошее?Я также знаю, что на стороне кода разработчики также должны проверить свою часть, так как я также читал, что эта проблема связана не только с аппаратной и Java-конфигурацией.Спасибо!

1 Ответ

0 голосов
/ 27 ноября 2018

Хорошо, команда java, которую вы пытаетесь установить, не устанавливает глобальное значение или что-то в этом роде.Именно так вы указали бы начальную и максимальную кучу при запуске определенной программы, и сообщение об ошибке говорит вам: «Я не знаю, что вы хотите, чтобы я запустил.Пожалуйста, скажите мне, где найти мой основной метод '.

Это тоже не проблема Ubuntu.Это действительно проблема Tomcat.Вам нужно будет обновить конфигурацию Tomcat.Вы должны указать Tomcat запустить вашу программу с необходимым вам объемом памяти.Пожалуйста, просмотрите документацию Tomcat (или, может быть, кто-то еще скажет вам, как, но я не запускал Tomcat годами).

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

...