前言
在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的内存,的确是很浪费的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。