如何为zookeeper配置java堆大小?

问题描述 投票:0回答:2

我正在尝试在 Ubuntu 18.04LTS Azure VM 上设置 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 配置最大堆的正确步骤是什么?

java apache-zookeeper
2个回答
7
投票

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

其他 JVM 选项可以使用

SERVER_JVMFLAGS
设置,例如,使用非默认 GC:

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

0
投票

注意:我来这里是为了与 Kafka 捆绑在一起的 Zookeeper,它尚未在答案中列出。

对于与 Apache Kafka 3.8.0 捆绑在一起的 Zookeeper (zookeeper.version=3.8.4-9316c2a7a97e1666d8f4593f34dd6fc36ecc436c),可以通过设置环境变量

KAFKA_HEAP_OPTS
来控制堆的设置,然后按如下方式启动服务器:

cd $KAFKA_INSTALL_DIR
export KAFKA_HEAP_OPTS="-Xmx512M -Xms512M"
bin/zookeeper-server-start.sh config/zookeeper.properties
© www.soinside.com 2019 - 2024. All rights reserved.