nacos單機本地配置文件存儲位置方式

nacos單機本地配置文件存儲位置

C:\Users***\nacos\config\config_rpc_client_nacos\

本地存儲文件

單機版Nacos文件配置問題

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"

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: