【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

问题描述

在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

 

相关文章
|
8月前
|
Java 应用服务中间件 API
【App Service】部署War包到Azure云上遇404错误
Java应用部署至Azure App Service for Windows后报404,本地运行正常。经排查,日志提示类文件版本不兼容:应用由Java 17(class file version 61.0)编译,但环境仅支持到Java 11(55.0)。错误根源为Java版本不匹配。调整App Service的Java版本至17后问题解决,成功访问接口。
814 3
|
8月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
8月前
|
存储 Linux 网络安全
【Azure App Service】Root CA on App Service
Azure App Service for Windows应用连接外部SSL服务时,需确保其证书由受信任的根CA颁发。多租户环境下无法修改根证书,但ASE(单租户)可加载自定义CA证书。若遇证书信任问题,可更换为公共CA证书或将应用部署于ASE并导入私有CA证书。通过Kudu的PowerShell(Windows)或SSH(Linux)可查看当前受信任的根证书列表。
171 13
|
9月前
|
API 网络架构 容器
【Azure Container App】查看当前 Container App Environment 中的 CPU 使用情况的API
在扩展 Azure Container Apps 副本时,因 Container App Environment 的 CPU 核心数已达上限(500 cores),导致扩展失败。本文介绍如何使用 `az rest` 命令调用 Azure China Cloud 管理 API,查询当前环境的 CPU 使用情况,并提供具体操作步骤及示例。
317 17
|
9月前
|
网络协议 Java Linux
【App Service】在Azure环境中如何查看App Service实例当前的网络连接情况呢?
在 Azure App Service(Windows 和 Linux)中部署应用时,分析网络连接状态是排查异常、验证端口监听及确认后端连接的关键。本文介绍如何在 Linux 环境中使用 `netstat` 命令查看特定端口(如 443、3306、6380)的连接情况,并解析输出结果。同时说明在 Windows App Service 中 `netstat` 被禁用的情况下,如何通过门户抓包等替代方法进行网络诊断。内容涵盖命令示例、操作步骤及附录说明,帮助开发者快速掌握云环境中的网络分析技巧。
222 11
|
9月前
|
数据安全/隐私保护
【Azure Function App】PowerShell Function 执行 Get-AzAccessToken 的返回值类型问题:System.String 与 System.Security.SecureString
将PowerShell Function部署到Azure Function App后,Get-AzAccessToken返回值类型在不同环境中有差异。正常为SecureString类型,但部分情况下为System.String类型,导致后续处理出错。解决方法是在profile.ps1中设置环境变量$env:AZUREPS_OUTPUT_PLAINTEXT_AZACCESSTOKEN=false,以禁用明文输出。
228 1
|
8月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
1324 139
|
8月前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
590 137
|
8月前
|
数据采集 JavaScript 前端开发
开发比分App?你缺的不是程序员
开发体育比分App,关键不在代码,而在懂体育、懂数据、懂用户。明确定位、理清需求、选好数据源,再找专业的产品、数据与技术人才协同,才能少走弯路。程序员最后入场,效率最高。
356 154