Как настроить размер кучи java для zookeeper?

#java #ubuntu-18.04 #apache-zookeeper

#java #ubuntu-18.04 #apache-zookeeper

Вопрос:

Я пытаюсь настроить Zookeeper 3.4.10 на виртуальной машине Ubuntu 18.04LTS Azure.

Согласно руководству администратора ZooKeeper «неправильный размер кучи Java, вы должны проявлять особую осторожность, чтобы правильно установить максимальный размер кучи Java. В частности, вы не должны создавать ситуацию, в которой ZooKeeper переключается на диск … »

В руководстве не дается инструкций о том, как установить максимальный размер кучи. Я уже провел небольшой поиск и нашел предложения по созданию java.env в каталоге zookeeper/conf. Я сделал это и попытался установить переменную, используя два разных метода, которые я нашел во время исследования:

Попытка #1:

 export JVMFLAGS="-Xmx6144m"
 

Попытка #2

 #!/bin/bash
export CLASSPATH="~/zookeeper-3.4.10/conf/log4j.properties"
export JVMFLAGS="-Xmx6144m"
 

После внесения этих изменений и перезапуска zookeeper я проверил размер кучи Java с помощью:

 java -XshowSettings:vm
 

И максимальный размер кучи не меняется.

Каковы правильные шаги для настройки максимальной кучи для zookeeper?

Ответ №1:

Двоичный выпуск Zookeeper содержит bin каталог со следующими файлами, в которых вас интересуют:

  • zkServer.sh
  • zkEnv.sh

zkEnv.sh определяет расположение всех файлов конфигурации и некоторых регуляторов настройки JVM, таких как размер кучи JVM. Размер кучи JVM можно изменить с помощью переменной оболочки ZK_SERVER_HEAP (в МБ).
Используйте следующую команду, чтобы задать пользовательский размер кучи:

 cd bin/
ZK_SERVER_HEAP=128 ./zkServer.sh start-foreground
 

В выходных данных последних версий Zookeeper вы можете найти следующие строки:

 2021-01-14 17:24:18,400 [myid:] - INFO  [main:Environment@98] - Server environment:os.memory.free=114MB
2021-01-14 17:24:18,400 [myid:] - INFO  [main:Environment@98] - Server environment:os.memory.max=128MB
2021-01-14 17:24:18,400 [myid:] - INFO  [main:Environment@98] - Server environment:os.memory.total=128MB
 

Другие варианты JVM могут быть установлены с помощью SERVER_JVMFLAGS , например, use non default GC:

 ZK_SERVER_HEAP=128 SERVER_JVMFLAGS="-XX: UseShenandoahGC" ./zkServer.sh start-foreground