#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