_JAVA_OPTIONS не устанавливает -Xmx

Я пытаюсь запустить Elasticsearch на своем компьютере с Windows, но получаю сообщение об ошибке «Не удалось создать виртуальную машину Java».

Windows 10, 32 ГБ ОЗУ, 64-битная
JVM 1.8.0_201
Elasticsearch 6.6.1 устанавливается с помощью установщика msi, а не как служба.

Elasticsearch запрашивает размер кучи чуть более 3 ГБ, поэтому я установил (а также попытался закомментировать) jvm.options с помощью:

-Xmx4096m
-Xms4096m

Но затем я получаю ужасную ошибку JVM. Я уверен, что ошибка вызвана слишком маленьким размером кучи jvm. Поэтому я установил для переменной среды _JAVA_OPTIONS значение «-Xms512m -Xmx6144m».

Если я бегу:

java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize"

Я получил:

Picked up _JAVA_OPTIONS: -Xms512m -Xmx6144m
 intx CompilerThreadStackSize                   = 0                                   {pd product}
 uintx ErgoHeapSizeLimit                        = 0                                   {product}
 uintx HeapSizePerGCThread                      = 87241520                            {product}
 uintx InitialHeapSize                          := 536870912                          {product}
 uintx LargePageHeapSizeThreshold               = 134217728                           {product}
 uintx MaxHeapSize                              := 2147483648                         {product}
 intx ThreadStackSize                           = 0                                   {pd product}
 intx VMThreadStackSize                         = 0                                   {pd product}
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

Вы можете видеть, что он «подбирает» _JAVA_OPTIONS, но MaxHeapSize по-прежнему составляет около 2 ГБ. Я также пытался запустить эластичный поиск от имени администратора и заставить jvm запускаться от имени администратора, но это не помогло. Кажется, это обычная проблема, но ответы ограничены, и ни один из них не помог мне.

РЕДАКТИРОВАТЬ У меня есть Elasticsearch, работающий на сервере Ubuntu 18 с теми же версиями java и ES.

ЕС установлено:

-Xms1g
-Xmx1g

и jvm имеет MaxHeapSize = 1056309248 (1 ГБ). И это работает нормально.

Я не понимаю, почему установка Windows запрашивает размер кучи 3 ГБ и почему jvm не может его предоставить.

0
0
1 282
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

документация говорит, что имя переменной env должно быть ES_JAVA_OPTS. Вы также можете просто не указывать его и полагаться на максимальный размер кучи по умолчанию, который в вашем случае должен составлять ~ 8 ГБ (1/4 доступной памяти).

Я бы поклялся, что пробовал без переменной окружения, но я, должно быть, пробовал, когда имел дело с более ранней ошибкой. Теперь это работает. Спасибо!

IBNets 02.03.2019 04:04

Другие вопросы по теме