由于服务器内存比较多,以前用的是zookeeper的默认内存,启动的时候没有对内存进行修改,为了让zookeeper能更好的工作,现在对zookeeper的启动内存进行指定。
首先 zookeep的内存大小指定的的配置文件在bin/zkEnv.sh,如下:
ZOOBINDIR="${ZOOBINDIR:-/usr/bin}"
ZOOKEEPER_PREFIX="${ZOOBINDIR}/.."
if [ "x$ZOOCFGDIR" = "x" ]
then
if [ -e "${ZOOKEEPER_PREFIX}/conf" ]; then
ZOOCFGDIR="$ZOOBINDIR/../conf"
else
ZOOCFGDIR="$ZOOBINDIR/../etc/zookeeper"
fi
fi
if [ -f "${ZOOCFGDIR}/zookeeper-env.sh" ]; then
. "${ZOOCFGDIR}/zookeeper-env.sh"
fi
if [ "x$ZOOCFG" = "x" ]
then
ZOOCFG="zoo.cfg"
fi
ZOOCFG="$ZOOCFGDIR/$ZOOCFG"
if [ -f "$ZOOCFGDIR/java.env" ]
then
. "$ZOOCFGDIR/java.env"
fi
if [ "x${ZOO_LOG_DIR}" = "x" ]
其中$ZOOCFGDIR/java.env是就是设置jvm内存大小的文件,这个文件默认情况下是没有的,需要手动创建,
vim /usr/local/services/zookeeper-3.4.8/conf/zookeeper-env.sh
source /etc/profile.d/java.sh
#ZOO_LOG4J_PROP=INFO,ROLLINGFILE
#ZOO_LOG_DIR=/usr/local/services/zookeeper-3.4.8/logs
#ZOOPIDFILE="${ZOO_LOG_DIR}"/zookeeper-server.pid
#SERVER_JVMFLAGS="-Xms2096m -Xmx2086m"
export JVMFLAGS="-Xms4096m -Xmx4096m $JVMFLAGS"
然后重新启动zk,然后你会发现,zk的jvm设置生效了,神奇吧:
[root@esearch-prod-component-010177210122 /usr/local/services/zookeeper-3.4.8/logs] 20:28:02 0
# jmap -heap 31058
Attaching to process ID 31058, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.91-b14
using thread-local object allocation.
Parallel GC with 23 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 4294967296 (4096.0MB)
NewSize = 1431306240 (1365.0MB)
MaxNewSize = 1431306240 (1365.0MB)
OldSize = 2863661056 (2731.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation