【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
问题描述
在Azure的Spring Cloud服务 (官名为:Spring Apps)中,在Metrics 页面中查看 App Memory Usage 和 jvm.memory.use,发现两则在下图中出现巨大差距。
- App Memory Usage还是在逐渐上升
- jvm.memory.use 却断崖式下降

在App Memory Usage在逐渐上涨的情况下,是否会最终出现OOM(out of memory,内存溢出)呢?
问题解答
首先,说明 App Memory Usage和jvm.memory.use的区别:
==> App Memory Usage: 这个指标是用于监视应用程序实际使用的内存量,包括Java虚拟机(JVM)使用的内存,以及应用程序使用的非堆内存,例如堆外内存。
==> jvm.memory.use: 这个指标是用于监视JVM在运行过程中使用的内存量。这包括堆内存使用情况(例如Eden、Survivor和Old Generation等堆空间),以及非堆内存使用情况(例如Metaspace)
简单来说就是App Memory Usage是关注整个应用程序使用的内存,包括JVM使用的内存和应用程序使用的非堆内存,而jvm.memory.use只关注JVM使用的内存。
其次,对图中指标进行解释:
==> JVM.Memory.Used 出现断崖式下降的情况,GC是可以将其中的non-indexed objects给回收掉
==> App memory usage 为 spring cloud 应用对应的底层AKS POD层面指标,表示当前分配给Java进程的内存。GC是不会影响POD level指标的情况的,且在POD分配给Java进程后,如果OS level不需要该部分内存用作它用是暂时不会收回的。
最后,是否会发生OOM?
==> 对于OOM,分为JVM OOM和容器OOM,JVM层面参考jvm.memory.used 指标,容器OOM考虑App memory Usage。GC仅对堆内即jvm.memory.used生效。
==> App memory usage很高也可能不发生容器OOM,仅当需要使用到对外内存或者当前JVM占用了所有的App Memory Usage时还需要分配另外的内存,才会发生容器级别OOM
参考资料
Azure Spring Apps 是什么?https://docs.azure.cn/zh-cn/spring-apps/overview
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM的更多相关文章
- 【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
问题描述 在使用Azure Spring Cloud服务时,如果要收集应用程序的日志.有控制台输出(实时流日志),也可以配置Log Analytics服务. 日志流式处理 可以通过以下命令在 Azur ...
- Spring Cloud Config整合Spring Cloud Kubernetes,在k8s上管理配置
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Kubernetes有专门的ConfigMap和Secret来管理配置,但它也有一些局限性,所以还是希望通过Spring C ...
- 【spring cloud】【IDEA】【maven】spring cloud多模块在idea上使用maven插件打包报错:程序包XXX不存在
>>>>spring cloud 多模块 >>>>在idea上使用maven插件打包,欲打包成jar包后 进行部署 >>>> 报 ...
- 1 Spring Cloud Eureka服务治理(上)
注:此随笔为读书笔记.<Spring Cloud微服务实战>,想学习Spring Cloud的同伴们可以去看看此书,里面对源码有详细的解读. 什么是微服务? 微服务是将一个原本独立的系统拆 ...
- Spring Cloud学习笔记--Spring Boot初次搭建
1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...
- Spring Cloud(二):Spring Cloud Eureka Server高可用注册服务中心的配置
前言 Eureka 作为一个云端负载均衡,本身是一个基于REST的服务,在 Spring Cloud 中用于发现和注册服务. 那么当成千上万个微服务注册到Eureka Server中的时候,Eurek ...
- 【Spring Cloud】Spring Cloud之整合Spring Cloud Bus以及最佳实践
一.整合步骤 1)加入Maven坐标 <!-- actuator监控模块 --> <dependency> <groupId>org.springframework ...
- Spring Cloud 学习 之 Spring Cloud Eureka(源码分析)
Spring Cloud 学习 之 Spring Cloud Eureka(源码分析) Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 ...
- spring Cloud网关之Spring Cloud Gateway
Spring Cloud Gateway是什么?(官网地址:https://cloud.spring.io/spring-cloud-gateway/reference/html/) Spring C ...
- Spring Cloud Netflix vs Spring Cloud Alibaba
Spring Cloud Netflixhttps://spring.io/projects/spring-cloud-netflix spring-cloud-alibaba/README-zh.m ...
随机推荐
- [Python] 基于RapidFuzz库实现字符串模糊匹配
RapidFuzz是一个用于快速字符串模糊匹配的Python库,它能够快速计算两个字符串之间的相似度,并提供与Fuzzywuzzy(已停用)和TheFuzz(Fuzzywuzzy的升级版)类似的接口. ...
- go多版本管理
在日常开发工作过程中,很多时候我们都需要在自己的机器上安装多个go版本,像是go1.16引入的embed,go1.18引入了泛型:又或是自己本地使用的是最新版,但公司的项目中使用的go1.14.go1 ...
- IDM(最佳的Windows下载工具)
如果你是一名互联网"老司机",那么一定听过「IDM」这款下载工具的大名!它的全名叫做 Internet Download Manager (互联网下载管理器),缩写就是 IDM. ...
- gRPC学习小札
gRPC 前言 为什么使用gRPC 传输协议 传输效率 性能消耗 gRPC入门 gRPC流 证书认证 使用根证书 gRPC实现token认证 和Web服务共存 验证器 REST接口 grpcurl工具 ...
- 年末将至,Java 开发者必须了解的 16 个Java 顶级开源项目!
年末将至,值得你关注的16个Java 开源项目! 本文已经收录自笔者开源的 JavaGuide: https://github.com/Snailclimb/JavaGuide ([Java学习+面试 ...
- Jupyter Notebook 下 import 第三方库,显示 no module xxx 【本质是环境没有切换过来】
1.最简单情况下 切换环境即可 首先激活环境: activate env # 激活你的环境名称 jupyter notebook 之后去运行代码即可,如果还不行请看下面: 2.遇到Jupyt ...
- ASP.NET Core分布式项目实战(oauth2 + oidc 实现 client部分)--学习笔记
任务16:oauth2 + oidc 实现 client部分 实现 client 之前启动一下上一节的 server,启动之前需要清除一些代码 注释 Program 的 MigrateDbContex ...
- Linux 在线安装MySQL8.0
1.更新Linux yum yum update 2.安装wget工具(如果已经安装wget,可以跳过该步骤) yum install wget 3.使用wget下载MySQL Yum Reposit ...
- JS Leetcode 263. 丑数 题解分析,来认识有趣的丑数吧
壹 ❀ 引 本题来自LeetCode263. 丑数,难度简单,题目描述如下: 给你一个整数 n ,请你判断 n 是否为 丑数 .如果是,返回 true :否则,返回 false . 丑数 就是只包含质 ...
- 古猫先生 SATA系列博文转载
SATA专题文章列表 SATA系列专题之一:浅析Physical Layer物理层OOB信号 SATA系列专题之二:2.0 Link layer链路层概述 SATA系列专题之二: 2.1 Link l ...