在 CentOS 上调整 ZooKeeper 的内存,通常是通过修改 JVM 堆内存参数 来完成的(ZooKeeper 是 Java 应用)。下面按常见部署方式说明。
zookeeper-env.sh如果你是通过 官方 tar 包 安装的 ZooKeeper:
cd $ZK_HOME/conf
zookeeper-env.shvi zookeeper-env.sh
export JVMFLAGS="-Xms2g -Xmx2g"
或(旧版本常用):
export ZK_SERVER_HEAP="2048"
示例(4G 内存):
export JVMFLAGS="-Xms4g -Xmx4g"
✅ 建议:
-Xms和-Xmx设置成一样,避免频繁 GC- 不要超过物理内存的 70%
$ZK_HOME/bin/zkServer.sh stop
$ZK_HOME/bin/zkServer.sh start
如果你是用 systemctl 启动的:
systemctl cat zookeeper
通常是:
/usr/lib/systemd/system/zookeeper.service
sudo vi /usr/lib/systemd/system/zookeeper.service
在 [Service] 中增加:
Environment="JVMFLAGS=-Xms2g -Xmx2g"
systemctl daemon-reload
systemctl restart zookeeper
如果是通过 yum 安装的:
/etc/zookeeper/conf/zookeeper-env.sh
修改方式同上。
ps -ef | grep zookeeper
应能看到:
-Xms2g -Xmx2g
jstat -gc $(pgrep -f QuorumPeerMain)
| 场景 | 建议 |
|---|---|
| 测试环境 | 1–2G |
| 小规模集群 | 2–4G |
| 生产环境 | 4–8G |
| 超大集群 | 不超过 8–10G |
⚠️ 不建议设置过大,ZooKeeper 是低延迟系统,堆太大反而 GC 慢。
如果你能告诉我:
我可以给你更精确的配置示例。