在第一个专题中已经比较系统地介绍了JVM三种常见的垃圾回收器算法和相关实践,这篇文章会在此基础上分场景将GC相关问题再梳理一番,一方面希望能够在发生GC问题的时候可以比较系统地指导问题分析的方向,另一方面也是希望通过这篇文章介绍一些关于使用GC日志分析GC问题的思路。如果在阅读的时候需要更加深入了解背后的机制,可以回头阅读公众号前期相关GC理论文章。 场景一: 没有发生GC […]
在第一个专题中已经比较系统地介绍了JVM三种常见的垃圾回收器算法和相关实践,这篇文章会在此基础上分场景将GC相关问题再梳理一番,一方面希望能够在发生GC问题的时候可以比较系统地指导问题分析的方向,另一方面也是希望通过这篇文章介绍一些关于使用GC日志分析GC问题的思路。如果在阅读的时候需要更加深入了解背后的机制,可以回头阅读公众号前期相关GC理论文章。 场景一: 没有发生GC […]
本系列共三篇文章, 本文是系列第2篇——进阶篇,详细讲解 MAT 各种工具的核心功能、用法、适用场景,并在具体实战场景下讲解帮大家学习如何针对各类内存问题。 《JVM 内存分析工具 MAT 的深度讲解与实践——入门篇》 介绍 MAT 产品功能、基础概念、与其他工具对比、Quick Start 指南。 《JVM 内存分析工具 MAT 的深度讲解与实践——进阶篇》 展开并详细讲 […]
本系列共三篇文章, 本文是系列第2篇——进阶篇,详细讲解 MAT 各种工具的核心功能、用法、适用场景,并在具体实战场景下讲解帮大家学习如何针对各类内存问题。 《JVM 内存分析工具 MAT 的深度讲解与实践——入门篇》 介绍 MAT 产品功能、基础概念、与其他工具对比、Quick Start 指南。 《JVM 内存分析工具 MAT 的深度讲解与实践——进阶篇》 展开并详细讲 […]
引言 JVM 内存分析往往由团队较资深同学来做,本系列帮助读者全面深度掌握 MAT 的使用方法。即使没有分析实践经验,也能快速成为内存分析高手! 本系列共计3篇: 《JVM 内存分析工具 MAT 的深度讲解与实践——入门篇》介绍 MAT 产品功能、基础概念、与其他工具对比、Quick Start 指南。 《JVM 内存分析工具 MAT 的深度讲解与实践——进阶篇》展开并详细 […]
作者:华钟明 部门:技术中台 前言 2022年年初至今,团队持续在给业务应用做性能优化,主要目标是提高业务应用稳定性和降低业务应用的机器成本。到现在,代码层面的优化已经到了一定的瓶颈。所以就把优化的思路伸向了JVM的调优。有赞目前所有的Java应用采用的JDK版本是1.8.0_201,这个版本支持多个垃圾回收机制,比如CMS和G1等,而在有赞,除了个别应用有调整成G1垃圾收 […]
前言 本文是京东交易链路众多核心应用GC优化经验的总结,旨在简明扼要说明各种回收器的基本调优设置,为各应用GC配置提供指引。 一、JDK版本 以下所有优化全部基于JDK8版本,强烈建议低版本升级到JDK8,并尽可能使用update_191以后版本。 二、如何选择垃圾回收器 响应优先应用:面向C端对响应时间敏感的应用,堆内存8G以上建议选择G1,堆内存较小或低版本JDK选择C […]
考虑CMS无法有效避免FGC,且单次GC耗时经常不可控。因此在如下两种场景下倾向于使用G1替换CMS: 大堆系统长时间FGC会引起上层服务异常,比如RegionServer/HiveServer等。 对读写毛刺比较敏感的在线数据库服务,比如在线推荐场景下的HBase,GC耗时过长就会导致整体可用率降低。 笔者在2019年开始将集团内部多数HBase所用CMS升级到G1,升级 […]
一. 背景介绍 笔者在这个系列的第一篇文章《一文看懂”ParNew+CMS”垃圾回收器》中详细介绍了”ParNew+CMS”垃圾回收器的工作原理。文章最后笔者提到CMS垃圾回收器有两个比较显著的问题,一个是长时间运行无法避免Full GC,一个是Remark阶段STW时间较长。正是因为这两个问题的存在,CMS垃圾回收器在JDK9被标记弃用,慢慢开始退出历史舞台。有走的,就有 […]
这是”大内存服务GC实践”的第三篇文章,前面两篇文章分别系统地介绍了”ParNew+CMS”组合垃圾回收器的原理以及FullGC的一些排查思路。分别见: 【大内存服务GC实践】- 一文看懂”ParNew+CMS”垃圾回收器 【大内存服务GC实践】- “ParNew+CMS”实践案例 : HiveMetastore FullGC诊断优化 本篇文章重点结合生产线上NameNod […]
Metastore服务是Hive的核心组成部分,是整个hadoop大数据体系的元数据基石,所有数据表相关schema信息、partition信息、元数据统计信息等都存储在Metastore所依赖的MySQL中,通过Metastore服务执行各种元数据操作。Metastore服务一旦长时间异常,所有依赖服务(诸如HiveServer、Spark、Impala等)就都会出现功能 […]
因为工作的需要,笔者前前后后分别接触了HBase RegionServer、HiveServerMetastore以及HDFS NameNode这些大内存JVM服务。 在和这些JVM系统打交道的过程中,GC优化始终是一个绕不过去的话题,有的是因为GC导致NameNode RPC请求耗时增大,有的是因为GC导致RegionServer/HiveServer/Metastore […]
作者:vivo互联网技术团队 Li Guanyun、 Jessica Chen 一、背景 2021年2月,收到反馈,视频APP某核心接口高峰期响应慢,影响用户体验。 通过监控发现,接口响应慢主要是P99耗时高引起的,怀疑与该服务的GC有关,该服务典型的一个实例GC表现如下图: 可以看出,在观察周期里: 平均每10分钟Young GC次数66次,峰值为470次; […]
此篇文章只聚焦于如何配置一个比较合理的采用CMS作为垃圾回收器的JVM参数。首先要说的是,JDK8要使用CMS,那么必须显示申明,因为它采用的默认垃圾回收器是ParallelGC。如何验证它默认采用的垃圾回收器呢?非常简单,运行如下代码: package com.afei.test.main; import java.util.ArrayList; import java. […]
服务器内存问题是影响应用程序性能和稳定性的重要因素之一,需要及时排查和优化。本文介绍了某核心服务内存问题排查与解决过程。首先在JVM与大对象优化上进行了有效的实践,其次在故障转移与大对象监控上提出了可靠的落地方案。最后,总结了内存优化需要考虑的其他问题。 一、问题描述 音乐业务中,core服务主要提供歌曲、歌手等元数据与用户资产查询。随着元数据与用户资产查询量的增长,一些J […]
JVM垃圾回收器CMS原理与调优 1. JVM运行原理简介 我们写好的代码,是要通过JVM才能运行的。 JVM 想要执行一个类,首先要加载类,在加载类之前,需要先编译成字节码class文件; 然后就执行类的加载过程,JVM 加载类的话,需要类加载器; 类加载器是分层级的,遵循双亲委派机制。 最上层是Bootstrap ClassLoder,加载java的核心类库, […]
BeanUtils (1) BigDecimal (1) CDC (1) ETL (1) github (1) heap (1) LLaMa (1) MAT (5) MDM (1) Sora (1) TCP (1) 业务图 (1) 企业应用 (1) 停机迁移 (1) 内存泄露 (4) 协议 (1) 可用性 (1) 基础设施层 (1) 堆内存 (1) 堆外存 (1) 大事记 (1) 实时协作 (1) 对象转换 (1) 应用架构 (1) 异常 (3) 技术规范 (1) 技术选型 (4) 提示工程 (1) 数据交换 (1) 数据共享 (1) 数据双写 (1) 日期 (1) 时间 (1) 时间线 (1) 术语 (1) 架构方案 (14) 流程图 (1) 精度 (1) 线程模型 (1) 经验分享 (1) 网络编程 (2) 解耦 (1) 软件复杂性 (1) 软件工程 (1) 重构 (4) 重试 (1) 隔离级别 (1) 集群扩容 (1) 领域层 (3) 领域模型 (1)
COPYRIGHT © 2014-2024 verysu.com . ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang