大概说明下:公司微服务应用的是Nacos,使用了三台做集群使用。
清明节最后一天,同事打电话说:公司应用挂了。我登录服务器发现提示:链接Nacos异常。
我马上登录Nacos服务器,发现报内存溢出(没有抓取异常图片,只是想先解决问题)。
等问题解决后,复盘问题:查看官方资料,发现关于Nacos的问题:
nacos单机和集群版本启动的时候JVM内存占用问题:
nacos的JVM内存占用在nacos启动脚本中设置。单机启动和集群启动默认在启动脚本中分配的JVM内存如下。可以看到在单机启动nacos的时候,默认分配的内存大小为512m和256m。但是实际上nacos跑了一段时间以后可能会遇到OOM内存溢出的问题。因此需要调整一下。
standalone表示单机启动。默认分配最大最小内存为:512M和256M
else下面表示除了单机启动以外的启动,我暂且理解为集群模式,他默认分配最大最小内存为1G和2G。
#===========================================================================================
# JVM Configuration
#===========================================================================================
if [[ "${MODE}" == "standalone" ]]; then
JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
else
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
top查看了以后,发现实际上nacos跑到了1.4G左右,因此更改512m和256m到1G,2G。然后重启nacos即可。