Nacos服务自动关闭问题汇总

您所在的位置:网站首页 凯里的景色 Nacos服务自动关闭问题汇总

Nacos服务自动关闭问题汇总

2023-11-04 10:37| 来源: 网络整理| 查看: 265

Nacos服务自动关闭

在使用Nacos时,有时候会遇到服务自动关闭的情况。这通常涉及到三方面的原因:内存配置、启动方式和关闭方式。下面逐一说明。

内存配置导致Nacos关闭

Nacos最新版本默认的JVM配置是2G,如果你的服务器配置比较低,在这样的默认配置下会导致OOM情况的发生。

startup.sh中配置项:

if [[ "${MODE}" == "standalone" ]]; then JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m" JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true" else if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true" fi 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" fi

这种情况,要么升级服务器配置,要么调整JVM参数,如果非必须建议调整JVM参数。除非业务量必须需要这么大的配置。

启动方式导致关闭

使用Nacos较低版本时,比如nacos 0.7.0 releases及以下版本时,Linux下如下方式启动:

sh startup.sh -m standalone

那么,当关闭窗口之后,Nacos服务会自动退出。这是因为没有作为后台进程启动的原因。

解决方案,启动时作为后台进程进行启动:

sh startup.sh -m standalone & // 或 setsid sh startup.sh -m standalone &

在高版本中,此问题已经得到解决,脚本中执行Java程序时,用的便是后台进程。

shutdown脚本误杀

在较低版本时,默认的shutdown.sh脚本脚本在集群情况下执行会将同一台机子上的所有节点都关闭掉,因为shell命令查找的是有nacos.nacos标记的pid,当搭建伪集群的情况,就会发生被误杀的情况。

为了避免shutdown.sh脚本的误杀,应该默认关闭当前目录下的节点更为安全,例如将原脚本更改为:

#!/bin/sh # Copyright 1999-2018 Alibaba Group Holding Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. BIN_DIR=$(cd `dirname $0`;pwd) #获取项目根目录 DEPLOY_DIR=$(cd ${BIN_DIR};cd ..;pwd) pid=`ps ax | grep -i $DEPLOY_DIR |grep java | grep -v grep | awk '{print $1}'` if [ -z "$pid" ] ; then echo "No nacosServer running." exit -1; fi echo "The nacosServer(${pid}) is running..." kill ${pid} echo "Send shutdown request to nacosServer(${pid}) OK"

此种问题多发生于一个服务部署多个Nacos,可自行修改关闭脚本。

小结

本文介绍了三种会导致Nacos服务莫名其妙被自动关闭的情况,当然还会有其他的情况,也欢迎大家共同交流。

程序新视界 公众号“ 程序新视界”,一个让你软实力、硬技术同步提升的平台,提供海量资料

微信公众号:程序新视界



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3