服务高峰期gc,导致服务不可用

随着应用程序的复杂性和负载的不断增加,对JVM进行调优,也是保障系统稳定性的一个重要方向。

需要注意,调优并非首选方案,一般来说解决性能问题还是要从应用程序本身入手(业务日志,慢请求等),只有在必要时才对jvm进行调优(gc日志和监控异常)。

下面会提供一个线上案例,说明gc调优的重要性。

02_jvm性能调优_垃圾收集器的实现-CSDN博客

调优关注指标

吞吐量

程序运行过程中执行两种任务,执行业务代码的任务和执行垃圾回收的任务;

吞吐量计算公式:CPU在用户应用程序的运行时间/(CPU在用户应用程序的运行时间+CPU在垃圾回收程序的运行时间)

简单理解就是,吞吐量大,意味着应用程序运行的时间越多,执行业务的任务越多。

那么吞吐量多大合适呢,对于我们业务系统来说,肯定是越大越好了,但吞吐量太大会导致什么问题呢?

停顿时间

因为JVM在进行垃圾回收的时候,有些特有的阶段需要停止业务程序的运行,只有这样它才能准确的找到所有可达的节点,确定哪些是垃圾对象并进行清理。

例如:gc停顿100ms,意味着在这100ms内应用程序无法运行。注意这里的停顿时长,只是JVM停止业务程序执行垃圾回收任务的时长,并不是总的垃圾回收时间(有的收集器是一个回收阶段是有多个停顿的)

堆内存大小

当gc完成后,通常会释放一大块内存空间,所以如果频繁的gc,但可用内存没有下降的趋势(或趋势比较小),通常暗示有内存泄漏的问题。

以上三者的关系

这3个指标不可能同时达到,因为他们是一个不可能的关系。

内存变大,要回收的东西肯定变多,停顿时间肯定也会延长。

吞吐量增加,必然要减少垃圾回收的频率,频率降低,垃圾回收停顿的时间也会延长。

停顿时间减少,需要增加gc的频率,导致吞吐量下降。

因此,目前的调优方向主要是吞吐量和暂停时间。(我们的目标是停顿时间竟可能小的情况下,达到最大的吞吐量)

案例-停顿时间过高

系统配置2c12g,默认使用并行回收器。

通过下图的监控,可以发现,gc频率低,但停顿时间比较长(通常停顿时间尽量不要超过300ms)

因为行回收器会导致暂停时间变长,可以考虑更换垃圾收集器(G1) -XX:+UseG1GC -XX:MaxGCPauseMillis=300 ,通过设置合理的暂停时间,减低停顿时间。

为什么没有使用cms呢?

在 JDK 1.8 中,G1 垃圾收集器(Garbage-First Garbage Collector)被引入作为一种新的选择,旨在替代老旧的 CMS(Concurrent Mark Sweep)收集器。随着 Java 平台的发展,CMS 逐渐退出了舞台,原因主要包括以下几点:

1. **停止更新和维护**:
   自 JDK 9 开始,CMS 收集器就被标记为不推荐使用(deprecated),并在后续的版本中被彻底移除。Oracle 宣布不再对 CMS 收集器进行更新和维护,这意味着任何新的性能改进或者 bug 修复都不会应用于 CMS。

2. **并发模式失败**:
   CMS 收集器在处理大量并发数据时可能会遇到 "并发模式失败"(Concurrent Mode Failure)的问题。这种情况发生时,CMS 收集器无法在用户线程运行的同时完成垃圾回收,导致它不得不进行一次完全的垃圾回收(Full GC),这将暂停所有用户线程,影响应用程序的响应时间。

3. **内存碎片问题**:
   CMS 是基于标记-清除算法的,这意味着它在回收内存时不会进行压缩,从而可能导致内存碎片。内存碎片会随着应用程序的运行逐渐累积,最终可能导致需要更大的连续内存空间时无法找到足够的空间,进而触发 Full GC。

4. **G1 收集器的优势**:
   G1 收集器被设计为一种服务器端的垃圾收集器,适用于多核处理器和大内存的机器。它具有以下优点:
   - **预测性停顿时间模型**:G1 收集器可以设置期望的停顿时间目标(Pause Time Goal),并尽可能地在这个时间内完成垃圾回收,从而提供更可控的停顿时间。
   - **并行和并发回收**:G1 能够充分利用多核处理器,同时在并发阶段减少应用程序的停顿时间。
   - **分区堆**:G1 将堆内存分割成多个区域(Region),这样可以更高效地进行垃圾回收,尤其是在处理大堆时。
   - **增量式清理**:G1 收集器可以逐步清理堆内存,而不需要一次性清理全部空间,这有助于避免长时间的停顿。
   - **压缩空间**:G1 在回收过程中可以进行空间压缩,从而减少内存碎片问题。

5. **社区和官方的推动**:
   Oracle 和 Java 社区推动使用更现代的垃圾收集器,如 G1 和后来的 ZGC(Z Garbage Collector)以及 Shenandoah,这些收集器旨在提供更低的停顿时间和更好的性能,特别是在大内存和多核心的环境中。

由于上述原因,G1 收集器成为了 JDK 9 及以后版本的默认垃圾收集器,并且随着 Java 平台的发展,G1 和其他新的垃圾收集器(如 ZGC 和 Shenandoah)继续得到改进,以满足现代应用程序对性能和响应时间的要求。

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

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

相关文章

struct.unpack_from()学习笔记

struct.unpack_from(fmt,b_data,offset) 按照指定的格式fmt,从偏移位置offset,对b_data开始解包,返回数据格式是一个元组(v1,v2…) fmt可以有: _struct.py: The remaining chars indicate types of args and must match exactly;…

基于Vue的验证码实现

一、验证码核心实现 创建slide-verify.vue&#xff0c;代码如下&#xff1a; <template><divclass"slide-verify":style"{ width: w px }"id"slideVerify"onselectstart"return false;"><!-- 图片加载遮蔽罩 -->&…

java项目之图书管理系统源码(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的图书管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 系统主要分为管理员角色和用…

【Redis7】Redis持久化机制之RDB

文章目录 1.RDB简介2.RDB配置触发设置3.RDB的优缺点4.如何检查修复RDB文件5.如何禁用RDB6.RDB参数优化7.总结 1.RDB简介 Redis持久化机制中的RDB&#xff08;Redis Database&#xff09;是一种将Redis在某个时间点的数据以快照形式保存到磁盘上的方法。 原理&#xff1a;RDB通…

Node.js版本管理与npm镜像源管理

一、nvm —— node的版本管理工具 1.安装 nvm Windows 使用 nvm-windows点击跳转下载网站。 按照图示操作步骤下一步即可&#xff0c;对于下载位置推荐不要C盘任意即可 2.查看可用的 Node.js 版本&#xff1a; nvm list available #显示所有可以下载的版本3.安装特定的…

自动化证书管理|如何通过可管理的ACME为“90天SSL证书”做好准备?

SSL证书在保护组织的Web通信安全方面发挥着至关重要的作用。最近的趋势表明&#xff0c;在增强安全性诉求的推动下&#xff0c;SSL证书有效期逐渐缩短。这一变化需要组织耗费更多的时间和资源来进行证书更新工作&#xff0c;为了降低潜在风险并简化流程&#xff0c;自动化证书管…

windows、mac、linux中node版本的切换(nvm管理工具),解决项目兼容问题 node版本管理、国内npm源镜像切换

文章目录 在工作中&#xff0c;我们可能同时在进行2个或者多个不同的项目开发&#xff0c;每个项目的需求不同&#xff0c;进而不同项目必须依赖不同版本的NodeJS运行环境&#xff0c;这种情况下&#xff0c;对于维护多个版本的node将会是一件非常麻烦的事情&#xff0c;nvm就是…

python查找内容在文件中的第几行(利用了滑动窗口)

def find_multiline_content(file_path, multiline_content):with open(file_path, r) as file:# 文件内容file_lines file.readlines()# 待检测内容multiline_lines multiline_content.strip().split(\n)# 待检测内容总行数num_multiline_lines len(multiline_lines)matchi…

安装测缝计安装事项详解

在建筑和工程领域&#xff0c;测量缝隙和裂缝的准确性对于工程质量和安全性至关重要。测缝计作为一种专业的测量工具&#xff0c;能够帮助工程师和施工人员准确测量和监测建筑结构的缝隙情况&#xff0c;进而采取合适的修复和加固措施&#xff0c;保证建筑物的稳定性和安全性。…

PCIe协议之-Flow Control基础

✨前言&#xff1a; Flow Control即流量控制&#xff0c;这一概念起源于网络通信中。PCIe总线采用Flow Control的目的是&#xff0c;保证发送端的PCIe设备永远不会发送接收端的PCIe设备不能接收的TLP&#xff08;事务层包&#xff09;。也就是说&#xff0c;发送端在发送前可以…

Flat Ads获广东电视台报道!CEO林啸:助力更多企业实现业务全球化增长

近日,在广州举行的第四届全球产品与增长展会(PAGC2024)上,Flat Ads凭借其卓越的一站式全球化营销和创新的变现方案大放异彩,不仅吸引了众多业界目光,同时也在展会上斩获了备受瞩目的“金帆奖”,展现了其在全球化营销推广领域的卓越实力和专业服务。 在大会现场,Flat Ads的CEO林…

XMR交易所对接方案

交易所对接 XMR 充币 用户充币地址生成 使用 subaddress 即可 充币数据监测 monero-wallet-rpc 的API文档: https://web.getmonero.org/resources/developer-guides/wallet-rpc.html 步骤1 : 使用 monero-wallet-cli 的以下选项生成 incoming-only钱包: --generate-from-v…

# 全面解剖 消息中间件 RocketMQ-(2)

全面解剖 消息中间件 RocketMQ-&#xff08;2&#xff09; 一、RocketMQ – RocketMQ 各角色介绍 1、RocketMQ 各角色介绍 Producer : 消息的发送者; 举例:发信者。Consumer : 消息接收者; 举例:收信者。Broker : 暂存和传输消息; 举例:邮局。NameServer : 管理 Broker; 举例…

css动画之hamburgers

动效1 代码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><div><label class"hamburger"><input type"checkbox"><…

BGP选路规则实验

实验拓扑及要求如下 注意&#xff1a; 在完成要求时&#xff0c;默认区域内IGP搭建完成&#xff0c;IBGP和EBGP的对等体关系建立完成 结果演示如下 IBGP内部搭建&#xff1a;使用OSPF IBGP与EBGP对等体建立 要求一&#xff1a;PreVal策略 PV属性默认值为0&#xff0c;规则是…

2024年ai知识库:特点、应用与搭建

随着科技的进步和企业的需要&#xff0c;ai知识库逐渐走进大众的视野并深受企业的青睐&#xff0c;掀起了搭建ai知识库的热潮。LookLook同学就来简单介绍一下关于ai知识库的特点、应用与发展趋势&#xff0c;带你了解2024年的ai知识库。 一、ai知识库的定义与特点 ai知识库是结…

CentOS7 部署单机版 elasticsearch

一、环境准备 1、准备一台系统为CentOS7的服务器 [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 2、创建新用户&#xff0c;用于elasticsearch服务 # elastic不允许使用root账号启动服务 [rootlocalhost ~]# useradd elastic [rootlo…

SHA1获取

这里写目录标题 JDK获取uniapp开发Dcould获取 JDK获取 一、下载jdk 链接: http://www.oracle.com/ 二、安装直接下一步下一步 三、配置环境变量 先新增变量JAVA_HOME变量值为C:\devUtils\jdk (jdk安装路径位置)再配置Path(%JAVA_HOME%\bin) 四、创建SHA1安全证书 win r输入cmd…

【运维心得】双WAN配置的一个误区

目录 双WAN配置及优势 实际案例 解决之道 最后总结 双WAN配置及优势 什么是双WAN配置&#xff0c;这里就不多赘述&#xff0c;简单的说&#xff0c;首先你要有一台支持双WAN口的路由器&#xff0c;目前大多数企业级路由器都具备了这个功能。甚至有些家用路由器也有此类功能…

搭建淘宝扭蛋机小程序:技术选型与最佳实践

随着移动互联网的快速发展&#xff0c;小程序作为一种轻量级应用&#xff0c;以其无需安装、即用即走的特点&#xff0c;受到了广大用户的喜爱。在电商领域&#xff0c;淘宝作为国内最大的电商平台之一&#xff0c;也积极拥抱小程序技术&#xff0c;为用户提供更加便捷、个性化…