Nacos 内存参数修改调优
前言在Spring Cloud项目中我们经常会用到Nacos,但如果只是在测试环境或者微服务数量相对比较少时,采用Nacos默认的JVM配置会浪费很多资源。特别是那些低配置用来研究的服务器。无论是出于生产环境优化所需,还是出于测试环境不浪费资源所需,都需要对默认的JVM进行调整。Nacos内存配置Nacos是基于Spring Boot的项目,所使用的内存参数是在启动命令中进行配置的。而启动命令位于
前言
在Spring Cloud项目中我们经常会用到Nacos,但如果只是在测试环境或者微服务数量相对比较少时,采用Nacos默认的JVM配置会浪费很多资源。特别是那些低配置用来研究的服务器。
无论是出于生产环境优化所需,还是出于测试环境不浪费资源所需,都需要对默认的JVM进行调整。
Nacos内存配置
Nacos是基于Spring Boot的项目,所使用的内存参数是在启动命令中进行配置的。而启动命令位于startup.sh(或.cmd)当中:
#===========================================================================================
# JVM Configuration
#===========================================================================================
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
可以看出,如果是standalone模式启动,默认内存参数为“-Xms512m -Xmx512m -Xmn256m”,虽然不少,但还算可以。
但如果是其他模式启动,则内存直接分配2个G,可能根本用不到这么多,这个就有点坑了。
其中对应参数的含义:
- -Xms: 设定程序启动时占用内存大小
- -Xmx: 设定程序运行期间最大可占用的内存大小
- -Xmn:新生代大小
为了避免频繁GC,设置的最小和最大内存为2G。因此,我们需要根据自己的业务情况,来进行占用内存的修改。
基于Docker的内存配置
如果是基于Docker进行服务启动的,也可以在脚本中进行调整:
version: '3'
services:
nacos:
image: nacos/nacos-server:latest # 镜像`nacos/nacos-server:latest`
container_name: nacos_server # 容器名为'nacos_server'
restart: always # 指定容器退出后的重启策略为始终重启
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
- "/opt/nacous/nacos_docker/logs:/home/nacos/logs"
- "/opt/nacous/nacos_docker/init.d/custom.properties:/home/nacos/init.d/custom.properties"
environment: # 设置环境变量,相当于docker run命令中的-e
- PREFER_HOST_MODE=hostname # 是否支持hostname
- MODE=standalone # 单机模式启动
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=127.0.0.1 # 注:这里不能为`127.0.0.1`或`localhost`方式!!!
- MYSQL_SERVICE_DB_NAME=nacos_config # 所需sql脚本位于 `nacos-mysql/nacos-mysql.sql`
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=123456
# JVM调优参数
- JVM_XMS=64m #-Xms default :2g
- JVM_XMX=64m #-Xmx default :2g
- JVM_XMN=16m #-Xmn default :1g
- JVM_MS=8m #-XX:MetaspaceSize default :128m
- JVM_MMS=8m #-XX:MaxMetaspaceSize default :320m
- NACOS_DEBUG=n #是否开启远程debug,y/n,默认n
- TOMCAT_ACCESSLOG_ENABLED=false #是否开始tomcat访问日志的记录,默认false
ports: # 映射端口
- "8848:8848"
- "9555:9555"
# mem_limit: 300m # 最大使用内存
小结
关于Nacos的内存调优本质上就是Spring Boot项目的内存调优,根据自己的业务所需,可以适当的进行参数大小的调整,并观察具体情况,根据业务变化进一步调整。在业务量比较小时,直接使用2G的内存,的确是很浪费的。
更多推荐
所有评论(0)