某充电桩业务服务内存监控和程序行为分析

原作者:展贝

原文地址:https://mp.weixin.qq.com/s/nnYCcVtwowvmj7Zn9XLIUg

在当今数据驱动的环境中,理解内存指标和程序行为对于确保应用程序的性能和可靠性至关重要。在依赖实时数据处理和高可用性的行业中尤其如此。通过利用可观测工具,可以深入了解应用程序如何使用内存,识别性能瓶颈,观察系统运行状态。而且随着最近几年业务系统的复杂性增加,很多高负荷的组件,需要更多的内存去运行,而且这些组件对性能的要求又比较严苛。所以通过监控内存指标,分析程序行为并对行为进行异常预测和及时告警就显得很重要。

内存关键指标和行为分析

  1. 堆栈使用情况:该指标显示当前使用的堆内存与可用堆内存的比例。高堆使用情况可能表明内存泄漏或低效的内存分配。
  2. 垃圾回收(GC)活动:GC指标揭示垃圾回收的频率,所需时间以及GC的效果。频繁的GC周期可能导致应用程序暂停,从而影响性能。而且过于频繁的GC可能存在对象创建销毁的问题,可以考虑是否重用对象减少创建销毁的过程。
  3. 内存占用:这衡量应用程序消耗的总内存,包括堆和非堆内存。服务一直存在较大的内存占用可能导致更高的基础设施成本和较低的可扩展性。短时间内较高内存占用,可能表示系统在承受较大流量。或者存在较大的需要计算的流程,而服务计算能力不足导致。
  4. 内存中TopN的大对象:这部分可以衡量在程序运行中,是否在某一步骤中存在阻塞,比如:一个数据处理的程序,应该是快速消费->快速处理->然后快速输出,如果在这个过程中存在某些对象大量存在,可能会存在某些可以优化的地方(窗口过大,加锁,对象无法销毁等情况)。

系统运行中出现某些故障的时候,内存会有异常波动,具体的原因可能是由于CPU计算能力不足,网络、请求吞吐量、或者服务上下游存在瓶颈。内存的异常只是程序行为的一种表现,具体的根因分析需要结合多种指标和上下流进行分析定位。

在DataBuff平台内,对服务的监控是全面的,不仅仅包括服务本身,还包括服务所在的环境,以及服务的上下游。在对故障进行分析的时候,也尽可能地分析导致程序行为异常的根本原因。尽快协助定位问题,解决问题。

案例:某充电桩业务服务内存系统监控

客户背景

客户是一家专注于电动汽车领域的综合服务平台,通过与充电运营商的合作,提供从充电基础设施建设到充电解决方案,再到车辆租赁及车联网等一系列服务。用户可以通过手机APP轻松完成站点搜索、路线规划、查看充电桩实时状态以及账户充值等多种功能。

客户痛点

每天晚上六点到七点之间的充电高峰时间段内,服务的请求量、数据处理量会在短时间内快速上升,相应的服务内存占用也会飙升。

解决方案

在触发边界(可能导致宕机)之前第一时间发现内存飙升的情况并及时处理,可以有效保障服务的稳定性和可用性(比如:及时调整k8s自动扩容策略,启用备用节点)。

模拟数据展示如下:

212942c8d62ce2eee2c44c278d1e8de9.jpeg

说明:内存使用率一直存在因为pod并没有挂掉,服务OOM了。

内存指标分析

  • 短时间内,可以监控到业务系统堆栈使用情况,高峰期间内存消耗激增。
  • GC指标显示,GC次数明显增加,GC时间上升,但是每次GC后内存清理效果很差。
  • TopN的对象,查看到存在大量的订单无法被及时处理,大量支付订单请求被挤压。

程序行为洞察

共享资源竞争

从内存行为可以分析出,大量用户访问充电系统,并在短暂时间内存在访问大量共享资源(这里指充电桩),导致系统在短时间内要处理大批量的请求信息

下单和充值系统负载

短时间内的请求锁单和进行充值,处理订单系统(核销,优惠,折扣等订单系统内容)吞吐量已经达到最大瓶颈,消费处理延迟,可能需要增加消费者,延迟扣费,错峰交易(对订单进行可容忍时间延迟)

后续措施

有效的全面监控

使用DataBuff不仅能实现对系统内存的监控,还包括服务网络、CPU、请求、以及服务上下游全面的监控。

告警及根因分析

当服务内存指标存在突增风险的情况下,进行及时告警,并对告警内容的上下文进行根因分析,针对性地对业务系统进行主动干预。使用DataBuff平台的智能告警以及告警中的根因分析,帮助运维人员避免服务崩溃带来的灾难性后果。

及时、全面地监控和告警,并进行根因分析。

结论

在高流量平台的背景下,有效的内存管理不仅提高了性能,还增强了用户满意度,推动了业务成功。采用全面的可观测,企业可以释放应用程序的全部潜力,同时将内存管理相关的风险最小化。随着应用程序的日益复杂化,部署可观测性平台可以有效应对不断增长的业务需求,维持业务系统的可靠性和可扩展性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/480766.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot共享汽车管理系统【附源码】

基于SpringBoot共享汽车管理系统 效果如下: 系统注册页面 系统登陆页面 系统管理员主页面 用户信息管理页面 汽车投放管理页面 使用订单页面 汽车归还管理页面 研究背景 随着计算机技术和计算机网络的逐渐普及,互联网成为人们查找信息的重要场所。二十…

计算机网络基础(2):网络安全/ 网络通信介质

1. 网络安全威胁 网络安全:目的就是要让网络入侵者进不了网络系统,及时强行攻入网络,也拿不走信息,改不了数据,看不懂信息。 事发后能审查追踪到破坏者,让破坏者跑不掉。 网络威胁来自多方面&#xff1a…

Cesium K-means自动聚合点的原理

Cesium K-means自动聚合点的原理 Cesium 是一个开源的 JavaScript 库,用于在 Web 环境中创建 3D 地球和地图应用。它能够处理地理空间数据,并允许开发者对大规模的地理数据进行可视化展示。在一些应用中,尤其是当处理大量地理坐标点时&#…

JAVA:Spring Boot 3 实现 Gzip 压缩优化的技术指南

1、简述 随着 Web 应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈。为了减少数据传输量,提高用户体验,我们可以使用 Gzip 压缩 HTTP 响应。本文将介绍如何在 Spring Boot 3 中实现 Gzip 压缩优化。 2、配置 Spring Boot 3 对…

TsingtaoAI具身智能高校实训方案通过华为昇腾技术认证

日前,TsingtaoAI推出的“具身智能高校实训解决方案-从AI大模型机器人到通用具身智能”基于华为技术有限公司AI框架昇思MindSpore,完成并通过昇腾相互兼容性技术认证。 TsingtaoAI&华为昇腾联合解决方案 本项目“具身智能高校实训解决方案”以实现高…

vitess使用记录:vtctldclient,设置分表规则

继续探索未完成的事情。 vitess使用记录系列已经写了好几篇了,记录了在测试过程中遇到的各种问题。《vitess使用:从部署到go客户端连接查询》、《vitess使用记录:vtctldclient》、《vitess使用:基于源码运行vtctldclient工具》整…

houdini肌肉刷pin点的方法

目标:产生gluetoanimation这个属性 主要节点:attribute paint(或者muscle paint) 步骤1: 导入肌肉资产 导入的是rest shape的肌肉 在有侧边栏可以打开display group and attribute list,方便查看group。不同的肌肉块按照muscl…

10个Word自动化办公脚本

在日常工作和学习中,我们常常需要处理Word文档(.docx)。 Python提供了强大的库,如python-docx,使我们能够轻松地进行文档创建、编辑和格式化等操作。本文将分享10个使用Python编写的Word自动化脚本,帮助新…

在开发环境中,前端(手机端),后端(电脑端),那么应该如何设置iisExpress

首先,要想手机端应用能成功请求后端,两个设备至少需在同一个局域网内,且IP地址互通; 因为ajax是http(s)://IP地址端口号的方式请求,但是iisExpress默认是localhost如何解决,并没有IP地址,所以手…

嵌入式硬件面试题【经验】总结----会不断添加更新

目录 引言 一、电阻 1、电阻选型时一般从那几个方面考虑 2、上拉电阻的作用 3、PTC热敏电阻作为电源电路保险丝的工作原理 4、如果阻抗不匹配,有哪些后果 二、电容 1、电容选型一般从哪些方面进行考虑? 2、1uf的电容通常来滤除什么频率的信号 三、三极管…

初识java(4)

今天给大家分享一下java中内置类型定义时的一些要点,我已经整理成笔记,现在分享给大家。 整型变量: 注:在定义int变量时,所赋值不能超过int的范围; 了 intd:1234567890127411编译时报错,初值超过胃int 当你赋值的过而值大于这个变量能够保存的最大值…

计算机毕业设计Python+LSTM天气预测系统 AI大模型问答 vue.js 可视化大屏 机器学习 深度学习 Hadoop Spark

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

初窥 HTTP 缓存

引言 对于前端来说, 你肯定听说过 HTTP 缓存。 当然不管你知不知道它, 对于提高网站性能和用户体验, 它都扮演着重要的角色! 它通过在客户端和服务器之间存储和重用先前获取的资源副本, 来减少网络流量和降低资源加载时间, 从而提升用户体验! 以下是 HTTP 缓存的重要性: 减少…

02_Django路由Router

二、Django路由Router 在实际开发过程中,一个Django 项目会包含很多的 app ,这时候如果我们只在主路由里进行配置就会显得杂乱无章,所以通常会在每个 app 里,创建各自的urls.py路由模块,然后从根路由出发,…

110页PPT战略指南:剖析Cross SWOT分析、市场洞察与内部优化方案

您看到的是一个非常全面的通过Cross SWOT制定战略方案的框架。以下是对每个部分的简要解释和补充,以帮助您更好地理解和应用这个框架: 一、通过Cross SWOT制定战略方案 1. 宏观环境 (1) PEST分析:评估政治(Political&#xff0…

ArcGIS 软件中路网数据的制作

内容导读 路网数据是进行网络分析的基础,它是建立网络数据集的数据来源。 本文我们以OSM路网数据为例,详细介绍OSM路网数据从下载,到数据处理,添加属性,完成符合网络分析的网络数据集的全部过程。 01 数据获取 比较…

JMeter实时性能压测可视化系统整合

一、相关工具简介: JMeter、Grafana 和 InfluxDB 结合实时地收集、分析和展示性能测试数据,进行更好地理解系统的性能表现,及时发现潜在问题并进行优化。 1,JMeter 实时生成性能数据,并将其发送到 InfluxDB 进行存储。2,InfluxDB 存储的数据。3,通过Grafana的仪表板,用…

数据结构——排序第三幕(深究快排(非递归实现)、快排的优化、内省排序,排序总结)超详细!!!!

文章目录 前言一、非递归实现快排二、快排的优化版本三、内省排序四、排序算法复杂度以及稳定性的分析总结 前言 继上一篇博客基于递归的方式学习了快速排序和归并排序 今天我们来深究快速排序,使用栈的数据结构非递归实现快排,优化快排(三路…

YOLOv9改进,YOLOv9引入CAS-ViT(卷积加自注意力视觉变压器)中AdditiveBlock模块,二次创新RepNCSPELAN4结构

摘要 CAS-ViT 是一种为高效移动应用设计的视觉Transformer。模型通过结合卷积操作与加性自注意机制,在保持高性能的同时显著减少计算开销,适合资源受限的设备如手机。其核心组件 AdditiveBlock 通过多维度信息交互和简化的加性相似函数,实现了高效的上下文信息整合,避免了…

【Leecode】Leecode刷题之路第62天之不同路径

题目出处 62-不同路径-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 62-不同路径-官方解法 方法1:动态规划 思路: 代码示例:(Java&…