前言

在Spring Cloud项目中我们经常会用到Nacos,但如果只是在测试环境或者微服务数量相对比较少时,采用Nacos默认的JVM配置会浪费很多资源。特别是那些低配置用来研究的服务器。

无论是出于生产环境优化所需,还是出于测试环境不浪费资源所需,都需要对默认的JVM进行调整。

Nacos内存配置

Nacos是基于Spring Boot的项目,所使用的内存参数是在启动命令中进行配置的。而启动命令位于startup.sh(或.cmd)当中:


#===========================================================================================
# JVM Configuration
#===========================================================================================
if [[ "${MODE}" == "standalone" ]]; thenJAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
elseif [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; thenJAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"fiJAVA_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访问日志的记录,默认falseports:                              # 映射端口- "8848:8848"- "9555:9555"# mem_limit: 300m   # 最大使用内存

小结

关于Nacos的内存调优本质上就是Spring Boot项目的内存调优,根据自己的业务所需,可以适当的进行参数大小的调整,并观察具体情况,根据业务变化进一步调整。在业务量比较小时,直接使用2G的内存,的确是很浪费的。


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

Nacos 内存参数修改调优相关推荐

  1. 【java】java JVM如何科学的设置内存参数 虚拟机调优案例

    1.概述 本文章是视频:[面试绝招]BAT大厂高并发系统JVM性能调优实战 主要是这个说的比较科学.我以前都是测试或者按照经验来设置. 假设一个网站是日活500万,然后付费转化率是10%,日均50万, ...

  2. 鲲鹏性能优化十板斧(二)——CPU与内存子系统性能调优

    1.1 CPU与内存子系统性能调优简介 调优思路 性能优化的思路如下: l   如果CPU的利用率不高,说明资源没有充分利用,可以通过工具(如strace)查看应用程序阻塞在哪里,一般为磁盘,网络或应 ...

  3. 深入理解JVM虚拟机10:JVM常用参数以及调优实践

    本文转自[JVM常用参数以及调优实践](https://blog.csdn.net/a724888/article/details/78367780) JVM常用参数选项 jvm 可配置的参数选项可以 ...

  4. spark submit参数及调优

    spark submit参数及调优 原文地址 spark submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数. 使用格式:  ...

  5. spark submit参数及调优(转载)

    spark submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数. 使用格式:  ./bin/spark-submit \--c ...

  6. Spark:spark submit参数及调优 perfect

    先看下spark运行原理流程: 我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程. 根据你使用的部署模式(deploy-mode)不同,Drive ...

  7. mysql的从头到脚优化之服务器参数的调优

    一. 说到mysql的调优,有许多的点可以让我们去做,因此梳理下,一些调优的策略,今天只是总结下服务器参数的调优  其实说到,参数的调优,我的理解就是无非两点: 如果是Innodb的数据库,innod ...

  8. Android内存分析和调优(上)

    Android内存分析和调优(上) Android内存分析和调优(上) Android内存分析工具(四):adb命令 posted on 2017-09-25 19:29 时空观察者9号 阅读(... ...

  9. 【华为云 ModelArts-Lab AI实战营】第三期:图像分类 (III) 模型参数网络调优

    https://github.com/huaweicloud/ModelArts-Lab/issues/219 本期实战为图像分类第三期.本期实战,本期我们将会以 "VGG16模型" ...

最新文章

  1. slackware12.0 安装AdobeReader_chs-7.0.9-1.i386.tar.gz后程序启动报错解决?
  2. @PreAuthorize 权限控制的原理
  3. 7.1.2 定义改进的Sales_date类
  4. Linux常用命令大全--有关磁盘空间的命令
  5. 机房收费系统——需求分析
  6. C 语言精髓之变参函数
  7. 收银系统服务器有什么好处,生鲜超市收银系统软件怎么选?收银系统能带来什么好处?...
  8. 机电传动控制大作业第一阶段
  9. 静态成员函数与静态数据的使用
  10. 宁波大学数学系好老师推荐
  11. 1235813找规律第100个数_中考数学专题 - -找规律总结题 -
  12. 参考文献起止页码怎么写_参考文献是图书,怎么标注页码啊,用到哪页就写哪页吗(⊙_⊙?)...
  13. 170713 逆向-填数游戏
  14. 微信小程序:微信商家券的领取
  15. L2-3 小A爱旅游 (25 分)
  16. 模型转换:tensorflow2 模型转pb,pb转tflite
  17. ESP32开发环境的搭建和 ESP-IDF支持以下调试方法
  18. 发明专利的权利要求书怎么写?
  19. 反光柱建图和定位总结
  20. 3. PCB表面元器件检测(机械臂+机器视觉)

热门文章

  1. 上班摸鱼,用Java实现天天酷跑!
  2. 设计模式-工厂模式-php
  3. PHP使用第三方即时获取物流动态
  4. 【内核漏洞利用】TokyoWesternsCTF-2019-gnote Double-Fetch
  5. 解决Selenium WebDriver 加载页面时出现浏览器闪退
  6. MySQL中变量的定义和变量的赋值使用
  7. Zipline的安装教程
  8. .NET现代化应用开发 - CQRS类目管理代码剖析
  9. 【极客头条征文】主编就是我
  10. Java培训班与科班的区别