如何配置zookeeper的java堆大小?

9nvpjoqh  于 2022-12-09  发布在  Apache
关注(0)|答案(1)|浏览(143)

我正在尝试在Ubuntu 18.04LTS Azure虚拟机上设置Zookeeper 3.4.10。
根据ZooKeeper管理员指南“不正确的Java堆大小您应该特别注意正确设置Java最大堆大小。特别是,您不应该创建ZooKeeper交换到磁盘的情况...”
本指南没有给予如何设置最大堆大小的说明。我已经做了一些搜索,并找到了在zookeeper/conf目录中创建java.env的建议。我已经这样做了,并尝试使用我在研究中发现的两种不同的方法来设置变量:
尝试#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配置最大堆的正确步骤是什么?

nfeuvbwi

nfeuvbwi1#

Zookeeper的二进制版本包含bin目录,其中包含您感兴趣的以下文件:

  • zkServer.sh
  • zkEnv.sh

zkEnv.sh定义所有配置文件和某些JVM调整旋钮的位置,例如JVM堆大小。JVM堆大小可以通过shell变量ZK_SERVER_HEAP(MB)进行更改。
使用以下命令设置自定义堆大小:

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

可以使用SERVER_JVMFLAGS设置其他JVM选项,例如,使用非默认GC:

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

相关问题