当前位置: 首页 > news >正文

nacos应用——占用内存过多问题解决(JVM调优初步)

在这里插入图片描述

问题描述

最近搞了一台1年的阿里云服务器,安装了一下常用的MySQL,Redis,rabbitmq,minio,然后有安装了一下nacos,结果一启动nacos内存占用就很高,就比较限制我继续安装其他镜像或者启动别的服务。

启动nacos之前:

在这里插入图片描述

启动nacos之后

在这里插入图片描述

问题分析

nacos启动参数初识

nacos本质就是启动了一个jar包,这里有它运行的一些参数
在这里插入图片描述

/usr/local/software/jdk/jdk1.8.0_371/bin/
java 
-Djava.ext.dirs=/usr/local/software/jdk/jdk1.8.0_371/jre/lib/ext:/usr/local/software/jdk/jdk1.8.0_371/lib/ext  
-Xms512m -Xmx512m -Xmn256m 
-Dnacos.standalone=true 
-Dnacos.member.list= 
-Xloggc:/usr/local/software/ali/nacos/8848/nacos/logs/nacos_gc.log -verbose:gc 
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 
-XX:+PrintGCTimeStamps 
-XX:+UseGCLogFileRotation 
-XX:NumberOfGCLogFiles=10 
-XX:GCLogFileSize=100M 
-Dloader.path=/usr/local/software/ali/nacos/8848/nacos/plugins/health,/usr/local/software/ali/nacos/8848/nacos/plugins/cmdb,/usr/local/software/ali/nacos/8848/nacos/plugins/selector 
-Dnacos.home=/usr/local/software/ali/nacos/8848/nacos 
-jar /usr/local/software/ali/nacos/8848/nacos/target/nacos-server.jar  
--spring.config.additional-location=file:/usr/local/software/ali/nacos/8848/nacos/conf/ 
--logging.config=/usr/local/software/ali/nacos/8848/nacos/conf/nacos-logback.xml 
--server.max-http-header-size=524288

这些参数是啥?

java -X

在这里插入图片描述

[root@iZuf61wy7p4tbr7lmwv18iZ ~]# java -X-Xmixed           混合模式执行(默认)-Xint             仅解释模式执行-Xbootclasspath:<: 分隔的目录和 zip/jar 文件>设置引导类和资源的搜索路径-Xbootclasspath/a:<: 分隔的目录和 zip/jar 文件>附加在引导类路径末尾-Xbootclasspath/p:<: 分隔的目录和 zip/jar 文件>置于引导类路径之前-Xdiag            显示附加诊断消息-Xnoclassgc        禁用类垃圾收集-Xincgc           启用增量垃圾收集-Xloggc:<file>GC 状态记录在文件中(带时间戳)-Xbatch           禁用后台编译-Xms<size>        设置初始 Java 堆大小-Xmx<size>        设置最大 Java 堆大小-Xss<size>        设置 Java 线程堆栈大小-Xprof            输出 cpu 分析数据-Xfuture          启用最严格的检查,预计会成为将来的默认值-Xrs              减少 Java/VM 对操作系统信号的使用(请参阅文档)-Xcheck:jni       对 JNI 函数执行其他检查-Xshare:off       不尝试使用共享类数据-Xshare:auto      在可能的情况下使用共享类数据(默认)-Xshare:on        要求使用共享类数据,否则将失败。-XshowSettings    显示所有设置并继续-XshowSettings:system(仅限 Linux)显示系统或容器配置并继续-XshowSettings:all显示所有设置并继续-XshowSettings:vm 显示所有与 vm 相关的设置并继续-XshowSettings:properties显示所有属性设置并继续-XshowSettings:locale显示所有与区域设置相关的设置并继续-X 选项是非标准选项。如有更改,恕不另行通知。

进一步解析

-XX参数主要有3种:行为参数,调优参数,调试参数行为参数(功能开关)
-XX:-DisableExplicitGC 禁止调用System.gc();但jvm的gc仍然有效
-XX:+MaxFDLimit 最大化文件描述符的数量限制
-XX:+ScavengeBeforeFullGC  新生代GC优先于Full GC执行
-XX:+UseGCOverheadLimit 在抛出OOM之前限制jvm耗费在GC上的时间比例
-XX:-UseConcMarkSweepGC 对老年代采用并发标记交换算法进行GC
-XX:-UseParallelGC 启用并行GC
-XX:-UseParallelOldGCFull GC启用并行,当-XX:-UseParallelGC启用时该项自动启用
-XX:-UseSerialGC  启用串行GC
-XX:+UseThreadPriorities  启用本地线程优先级性能调优
-XX:LargePageSizeInBytes=4m 设置用于Java堆的大页面尺寸
-XX:MaxHeapFreeRatio=70 GC后java堆中空闲量占的最大比例
-XX:MaxNewSize=size 新生成对象能占用内存的最大值
-XX:MaxPermSize=64m 老年代对象能占用内存的最大值
-XX:MinHeapFreeRatio=40 GC后java堆中空闲量占的最小比例
-XX:NewRatio=2 新生代内存容量与老生代内存容量的比例
-XX:NewSize=size 新生代对象生成时占用内存的默认值
-XX:ReservedCodeCacheSize=32m  保留代码占用的内存容量
-XX:ThreadStackSize=512 设置线程栈大小,若为0则使用系统默认值
-XX:+UseLargePages 使用大页面内存调试参数
-XX:-CITime 打印消耗在JIT编译的时间
-XX:ErrorFile=./hs_err_pid<pid>.log 保存错误日志或者数据到文件中
-XX:-ExtendedDTraceProbes  开启solaris特有的dtrace探针
-XX:HeapDumpPath=./java_pid<pid>.hprof 指定导出堆信息时的路径或文件名
-XX:-HeapDumpOnOutOfMemoryError 当首次遭遇OOM时导出此时堆中相关信息
-XX:OnError="<cmd args>;<cmd args>" 出现致命ERROR之后运行自定义命令
-XX:OnOutOfMemoryError="<cmd args>;<cmd args>" 当首次遭遇OOM时执行自定义命令
-XX:-PrintClassHistogram  遇到Ctrl-Break后打印类实例的柱状信息,与jmap -histo功能相同
-XX:-PrintConcurrentLocks  遇到Ctrl-Break后打印并发锁的相关信息,与jstack -l功能相同
-XX:-PrintCommandLineFlags 打印在命令行中出现过的标记
-XX:-PrintCompilation  当一个方法被编译时打印相关信息
-XX:-PrintGC  每次GC时打印相关信息
-XX:-PrintGCDetails  每次GC时打印详细信息
-XX:-PrintGCTimeStamps 打印每次GC的时间戳
-XX:-TraceClassLoading 跟踪类的加载信息
-XX:-TraceClassLoadingPreorder 跟踪被引用到的所有类的加载信息
-XX:-TraceClassResolution  跟踪常量池
-XX:-TraceClassUnloading  跟踪类的卸载信息
-XX:-TraceLoaderConstraints 跟踪类加载器约束的相关信息

回过头分析nacos

# 设置了Java的初始堆大小和最大堆大小,以及新生代大小
-Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -- 单体模式启动
-Dnacos.member.list= 
-Xloggc:/usr/local/software/ali/nacos/8848/nacos/logs/nacos_gc.log -verbose:gc# 和gc相关的参数
-XX:+PrintGCDetails      -- 每次GC时打印详细信息
-XX:+PrintGCDateStamps   -- 应该是打印一下日期
-XX:+PrintGCTimeStamps   -- 打印每次GC的时间戳
-XX:+UseGCLogFileRotation -- GC的日志
-XX:NumberOfGCLogFiles=10 -- 日志文件数量
-XX:GCLogFileSize=100M    -- 日志文件大小

问题解决

尝试设置参数

下面是原来的参数,可以看到似乎初始堆大小和最大堆大小,以及新生代大小遵循 2:2:1的比例,所以尝试把他们都除以2

在这里插入图片描述

参数修改如下所示

在这里插入图片描述

启动查看

现在启动试试,可以看到内存占用87%,确实少了,还能再运行其他的jar包

在这里插入图片描述

前端控制台也能正常启动,后续还需要进一步验证参数是否设置的合适

在这里插入图片描述

相关文章:

nacos应用——占用内存过多问题解决(JVM调优初步)

问题描述 最近搞了一台1年的阿里云服务器&#xff0c;安装了一下常用的MySQL&#xff0c;Redis&#xff0c;rabbitmq&#xff0c;minio&#xff0c;然后有安装了一下nacos&#xff0c;结果一启动nacos内存占用就很高&#xff0c;就比较限制我继续安装其他镜像或者启动别的服务…...

大漠插件(二、Qt使用插件时注意事项)

本章目的 在上篇已经注册完毕大漠&#xff0c;那么怎么使用大漠来制作脚本&#xff0c;我选择了我最熟悉的Qt来开发&#xff0c;毕竟只是小软件&#xff0c;用脚本或者c都差不了多少。本章就是开发途中的一些坑。 本人开发环境是 win11 64、Qt 5.15.2安装了5.10.0的msvc2015 32…...

CSS 浮动

目标target✓ 能够说出来为什么需要浮动能够说出来浮动的排列特性能够说出来三种最常见的布局方式能够说出来为什么需要清除浮动,能够至少写出两种清楚浮动的方法能够利用Photoshop实现基本的切图能够利用Photoshop插件实现切图能够完成学成在线的页面布 传统网页布局的三种模…...

基于STM32+华为云IOT设计的火灾感知系统

一、设计需求 【1】 项目背景 随着城市化进程的加快和人们生活水平的提高,火灾事故频繁发生,给人们的生命财产安全带来巨大威胁。因此,开发一种可靠的火灾感知系统对于预防和减少火灾事故具有重要意义。近年来,随着物联网技术的发展,基于物联网的火灾感知系统逐渐成为研…...

算法通关村第八关|白银|二叉树的深度和高度问题【持续更新】

1.最大深度问题&#xff08;后序遍历&#xff09; 只需要一直递归&#xff0c;维护一个最大值。每一层只要有一个子节点&#xff0c;这个最大值就可以增加。 public int maxDepth(TreeNode root) {if (root null) {return 0;}int leftHeight maxDepth(root.left);int right…...

cmake 之add_definitions使用误区

需求 需要实现&#xff0c;在cmake中定义宏定义&#xff0c;可以&#xff1a;1&#xff09; 在code中可以使用&#xff1b;2&#xff09; 在cmake中可以识别是否已定义 问题 宏定义&#xff0c;cmake有add_definitions函数&#xff0c;直观的实现方法如下。 cmake_minimum…...

Leetcode—515.在每个树行中找最大值【中等】

2023每日刷题&#xff08;二十三&#xff09; Leetcode—515.在每个树行中找最大值 DFS实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ /*** Note: The returned arra…...

安防监控系统EasyCVR平台设备通道绑定AI算法的功能设计与开发实现

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、…...

element 弹窗浏览器后退-遮照层还存在问题 以及跟vue keep-alive冲突

问题&#xff1a;element 弹窗浏览器后退-遮照层还存在问题 查询官网可以设置 modal-append-to-body“false” 可以全局设置 ElementUI.Dialog.props.modalAppendToBody.default false 后续 基本到这能解决问题&#xff0c;不过本项目比较特殊&#xff0c;使用了 keep-alive…...

C++(Qt)软件调试---自动注册AeDebug(17)

C(Qt)软件调试—自动注册AeDebug&#xff08;17&#xff09; 文章目录 C(Qt)软件调试---自动注册AeDebug&#xff08;17&#xff09;1、什么是AeDebug2、使用调试工具3、WinDbg注册到AeDebug4、ProcDump注册到AeDebug5、Dr.MinGW注册到AeDebug6、Visual Studio 注册到AeDebug 1…...

云原生周刊:Gateway API 1.0.0 发布 | 2023.11.6

开源项目推荐 Kueue Kueue 是一套用于作业队列的 API 和控制器。它是作业级管理器&#xff0c;可决定何时允许作业启动&#xff08;如创建 pod&#xff09;&#xff0c;何时停止作业&#xff08;如删除活动 pod&#xff09;。 Reloader 一个 Kubernetes 控制器&#xff0c;…...

Java2 - 数据结构

5 数据类型 5.1 整数类型 在Java中&#xff0c;数据类型用于定义变量或表达式可以存储的数据的类型。Java的数据类型可分为两大类&#xff1a;基本数据类型和引用数据类型。 byte&#xff0c;字节 【1字节】表示范围&#xff1a;-128 ~ 127 即&#xff1a;-2^7 ~ 2^7 -1 sho…...

精解括号匹配问题与极致栈设计:揭开最大栈和最小栈的奥秘

目录 括号匹配问题最小栈最大栈 最大栈和最小栈是极致栈的两个重要变种。最大栈用于存储当前匹配的最大值&#xff0c;而最小栈用于存储当前匹配的最小值。 括号匹配问题 这个问题我们来看力扣20题的描述&#xff1a; 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’…...

云存储/视频监控管理平台EasyCVR,使用sqlite数据库出现卡顿该如何优化?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…...

实战!工作中常用的设计模式

文章目录 前言一、策略模式1.1、 业务场景1.2 、策略模式定义1.3、 策略模式使用1.3.1、一个接口&#xff0c;两个方法1.3.2、不同策略的差异化实现1.3.3、使用策略模式 二、责任链模式2.1、业务场景2.2、责任链模式定义2.3、责任链模式使用2.3.1、一个接口或者抽象类2.3.2、每…...

MySQL进阶_1.逻辑架构和SQL执行流程

文章目录 第一节、逻辑架构剖析1.1、服务器处理客户端请求1.2、Connectors1.3、第1层&#xff1a;连接层1.4、第2层&#xff1a;服务层1.5、 第3层&#xff1a;引擎层1.6、 存储层1.7、小结 第二节、SQL执行流程2.1、查询缓存2.2、解析器2.3、优化器2.4、执行器 第三节、数据库…...

基于GCC的工具objdump实现反汇编

一&#xff1a;objdump介绍 在 Linux中&#xff0c;一切皆文件。 Linux 编程实际上是编写处理各种文件的代码。系统由许多类型的文件组成&#xff0c;但目标文件具有一种特殊的设计&#xff0c;提供了灵活和多样的用途。 目标文件是包含带有附加地址和值的助记符号的路线图。这…...

排序算法的空间复杂度和时间复杂度

一、排序算法的时间复杂度和空间复杂度 排序算法 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性 冒泡排序 O(n) O(n) O(n) O(1) 稳定 直接选择排序 O(n) O(n) O(n) O(1) 不稳定 直接插入排序 O(n) O(n) O(n) O(1) 稳定 快速排序 O(n…...

【电路笔记】-基尔霍夫电路定律

基尔霍夫电路定律 文章目录 基尔霍夫电路定律1、框架和定义2、基尔霍夫电流定律3、基尔霍夫电压定律4、基尔霍夫定律应用5、基尔霍夫定律的局限性6、总结 在本文中&#xff0c;将介绍最基本、最重要的电路定律之一。 这些法律由德国医生古斯塔夫基尔霍夫 (Gustav Kirchoff) 于 …...

从零开始搭建React+TypeScript+webpack开发环境-基于axios的Ajax请求工具

什么是axios axios是一款基于Promise的HTTP客户端&#xff0c;适用于浏览器和Node.js环境。它的特点包括&#xff1a; 支持浏览器和Node.js环境。支持Promise API。支持拦截请求和响应。支持取消请求。自动转换JSON数据。支持CSRF保护。 使用axios可以更方便地发送HTTP请求&…...

【uniapp小程序下载】调用uni.uploadfile方法在调试工具里是没有问题的,但是线上版本和体验版就调用不成功,真机调试也没问题

把你的下载地址前缀添加到合法域名就解决了 在调试工具里成功了是因为勾选了下面这项 下面是我的下载并打开函数 methods: {// 下载downloadFileFn(data) {if (this.detailsObj.currentUserBuy) {uni.downloadFile({// data是路径url: https:// data,success(res) {//保存到本…...

chatGLM中GLM设计思路

GLM是结合了MLM和CLM的一种预训练方式&#xff0c;其中G为general&#xff1b;在GLM中&#xff0c;它不在以某个token为粒度&#xff0c;而是一个span&#xff08;多个token&#xff09;&#xff0c;这些span之间使用自编码方式&#xff0c;而在span内部的token使用自回归的方式…...

卡牌游戏类型定制开发微信卡牌小程序游戏

卡牌类型的游戏开发具有一些独特的特点和挑战&#xff0c;以下是一些主要的特点&#xff1a; 卡牌设计和平衡&#xff1a;卡牌游戏的核心是卡牌设计和平衡。开发团队需要设计各种卡牌&#xff0c;确保它们在游戏中相互平衡&#xff0c;以便提供有趣的游戏体验。卡牌的特性、效…...

web —— css(1)

Web —— css基础 1. CSS样式表2. CSS的三种引入方式3. CSS 语法4. CSS 选择器4.1 元素选择器4.2 类选择器4.3 ID选择器4.4 属性选择器4.5 后代选择器4.6 子元素选择器4.7 伪类选择器4.8 分组选择器 5. 颜色和字体6. 显示方式display7. 盒子模型7.1 盒子模型 - 外边距塌陷7.2 盒…...

站群服务器的特性和好处是什么

站群服务器的特性和好处是什么 站群服务器的特性是什么&#xff1f;站群服务器是一种为一个网站或多个网站配置独立IP的服务器。因而相比一般的服务器&#xff0c;站群服务器最大的特性就是IP数量是非常的多。那么租用站群服务器使用有什么好处呢&#xff1f; 多网站优化 大…...

竞赛 行人重识别(person reid) - 机器视觉 深度学习 opencv python

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习行人重识别(person reid)系统 该项目…...

软件设计模式的意义

软件设计模式的意义 所有开发人员都应该接触过软件设计模式这个概念&#xff0c;看过《设计模式-可复用的对象软件的基础》这本书&#xff0c;在面试中都被问过&#xff1a; 你用过哪些设计模式这种问题。但很大可能也就仅此而已了。 为什么好像只能从框架中找到设计模式的应用…...

vue基础知识十八:说说你对keep-alive的理解是什么?

一、Keep-alive 是什么 keep-alive是vue中的内置组件&#xff0c;能在组件切换过程中将状态保留在内存中&#xff0c;防止重复渲染DOM keep-alive 包裹动态组件时&#xff0c;会缓存不活动的组件实例&#xff0c;而不是销毁它们 keep-alive可以设置以下props属性&#xff1a…...

Linux CentOS配置阿里云yum源

一&#xff1a;先备份文件&#xff0c;在配置失败时可以恢复 cd /etc/yum.repos.d mkdir back mv *.repo back 二&#xff1a;下载阿里云yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel…...

ESP32网络开发实例-Web服务器以仪表形式显示传感器计数

Web服务器以仪表形式显示传感器计数 文章目录 Web服务器以仪表形式显示传感器计数1、应用介绍2、软件准备3、硬件准备4、代码实现4.1 Web页面文件4.2 Web服务器代码实现在本文中,我们将介绍使用服务器发送事件 (SSE) 构建 ESP32 仪表 Web 服务器。服务器将自动向所有连接的网络…...