首页 > 其他分享 >【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM

【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM

时间:2023-04-20 20:36:37浏览次数:44  
标签:OOM Spring App Memory Usage 内存 memory Azure

问题描述

在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

 

 

标签:OOM,Spring,App,Memory,Usage,内存,memory,Azure
From: https://www.cnblogs.com/lulight/p/17338220.html

相关文章

  • SpringBoot应用集成微服务组件Nacos
    目录springboot与微服务组件nacosNacos服务快速启动STS4开发工具Maven环境配置STS4开发工具引入Maven配置MavenRepo配置阿里云镜像源Springboot集成nacos服务springboot项目构建springboot集成微服务nacosnacos版本问题nacos2.0.0版本兼容性说明nacos升级文档nacos版本与spring......
  • Spring源码系列:核心概念解析
    前言本文旨在为读者解析Spring源码中的关键类,以便读者在深入阅读源码时,能够了解关键类的作用和用途。在阅读Spring源码时,经常会遇到一些不熟悉的概念,了解关键类的作用可以帮助读者更好地理解这些概念。BeanDefinitionBeanDefinition是Spring框架中的一个重要概念,它定义了一个Be......
  • asp.net程序通过Microsoft Azure中SAML协议实现单点登录
    1.新建应用程序登录Azure门户,进入左侧菜单“企业应用程序--所有应用程序”,点“新建应用程序”,继续点“创建你自己的应用程序”,如下图选择和录入名称:填好应用的名称、想要如何处理应用程序必须选择第三个“继承未在库中找到的任何其他应用程序(非库)”,之后点“创建”按钮;2.单......
  • CentOS7 云服务器搭建及部署SpringBoot+vue项目
    CentOS7云服务器搭建及部署SpringBoot+vue项目1)云服务器配置以及环境搭建1.1JDK安装卸载现有环境(有则卸载)使用rpm命令查询相关java套件rpm-qa|grepjava如果存在,通过命令删除对应版本的JDKrpm-e--nodepsjava-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64rpm-e......
  • SpringBoot Kotlin 集成和使用 Protobuf
    环境版本不同的环境配置参数可能区别较大,请酌情参考。插件或依赖版本号SpringBoot2.7.10Gradle7.5.1ProtobufGradlePlugin0.9.2ProtobufJava3.21.9Protoc3.21.9Grpc1.53.0项目是使用IDEA创建的SpringWeb项目,语言Kotlin,构建GradlePr......
  • Spring 3 mvc中返回pdf,json,xml等不同的view
    评:springmvc就是好,特别是rest风格的话,一个org.springframework.web.servlet.view.ContentNegotiatingViewResolver就可以根据不同的场景返回不同的view了,比如返回json,xml,pdf等.马上看代码实现先是一个简单的pojoJava代码收藏代码packagecom.hmkcode.vo;impor......
  • Spring MVC过滤器-ShallowEtagHeaderFilter
    评:ShallowEtagHeaderFilter是spring提供的支持ETag的一个过滤器,所谓ETag是指被请求变量的实体值,是一个可以与Web资源关联的记号,而Web资源可以是一个Web页,也可以是JSON或XML文档,服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端,以下是服务器端返回的格式:[......
  • 【Spring Cloud】网关
     ServerWebExchange中获取TokenprivateStringgetToken(ServerWebExchangeexchange){StringauthToken=exchange.getRequest().getHeaders().getFirst("Token");if(StrUtil.isBlank(authToken)){MultiValueMap<String,String>q......
  • (IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案
    转:(IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案 【Maven】理解maven的6大内置属性   ......
  • 在eclipse中创建springMVC项目
    1.创建一个Javaweb项目 2.输入项目名称,下一步 3.下一步,勾选创建web.xml选项 4.在lib文件夹中添加jar包 5.在WEB-INF文件夹下添加springmvc框架配置文件,起名为springmvc-servlet.xml 代码如下:<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.s......