YGC问题排查,又让我涨姿势了!
在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The World问题,因此很容易导致服务
嵌入式linux-CPU性能优化小记
嵌入式业务应用运行导致系统sys CPU使用率飚高,本文记录本次性能分析定位过程,包括一些常用工具使用示例等
线程池运用不当的一次线上事故
在高并发、异步化等场景,线程池的运用可以说无处不在。线程池从本质上来讲,即通过空间换取时间,因为线程的创建和销毁都是要消耗资源和时间的,对于大量使用线程的场景,使用池化管理可以延迟线程的销毁,大大提高
平均负载与 CPU 使用率,到底有啥区别?
大家好,我是树哥。在性能优化中,我们经常会关注 CPU 平均负载这个指标。但如果让你来跟我解释一下什么是平均负载,你能说得清楚吗?它跟 CPU 使用率有什么区别?我想可能很多人都数不清楚,今天我们就来盘一盘 CPU 平均负载这个指标!平均负载与 CPU 使用率,到底有啥区别?Linux 进程
【全网首发】一些可以显著提高 Java 启动速度方法
我们线上的业务 jar 包基本上普遍比较庞大,动不动一个 jar 包上百 M,启动时间在分钟级,拖慢了我们在故障时快速扩容的响应。于是做了一些分析,看看 Java 程序启动慢到底慢在哪里,如何去优化,目前的效果是大部分大型应用启动时间可以缩短 30%~50%主要有下面这些内容修改 asy
JVM 源码分析之一个 Java 进程究竟能创建多少线程
概述虽然这篇文章的标题打着JVM源码分析的旗号,不过本文不仅仅从 JVM 源码角度来分析,更多的来自于 Linux Kernel 的源码分析,今天要说的是 JVM 里比较常见的一个问题。这个问题可能有
一次完整的JVM堆外内存泄漏故障排查记录
前言记录一次线上JVM堆外内存泄漏问题的排查过程与思路,其中夹带一些「JVM内存分配的原理分析」以及「常用的JVM问题排查手段和工具分享」,希望对大家有所帮助。在整个排查过程中,我也走了不少弯路,但是
记一次Synchronized关键字使用不合理,导致的多线程下线程阻塞问题排查
在为客户进行性能诊断调优时,碰到了一个Synchronized关键字使用不合理导致多线程下线程阻塞的情况。用文字记录下了问题的整个发现-排查-分析-优化过程,排查过程中使用了我司商业化产品——XLan
一次大量 JVM Native 内存泄露的排查分析(64M 问题)
我们有一个线上的项目,刚启动完就占用了使用 top 命令查看 RES 占用了超过 1.5G,这明显不合理,于是进行了一些分析找到了根本的原因,下面是完整的分析过程,希望对你有所帮助。会涉及到下面这些内容Linux 经典的 64M 内存问题堆内存分析、Native 内存分析的基本套路
线上服务的FGC问题排查,看这篇就够了!
这篇文章以一个Full GC频繁的线上案例作为引子,详细介绍GC的排查过程,另外会结合GC的运行原理给出一份实践指南。内容分成3个部分:从一次Full GC频繁的线上案例说起、GC的运行原理介绍、排查Full GC问题的实践指南
一次 Java 进程 OOM 的排查分析(glibc 篇)
遇到了一个 glibc 导致的内存回收问题,查找原因和实验的的过程是比较有意思的,主要会涉及到下面这些:- Linux 中典型的大量 64M 内存区域问题- glibc 的内存分配器 ptmalloc
使用Top_X插件排查内存过载问题
Top命令是Linux 系统下常用的监控工具,用于实时获取进程级别的 CPU 或内存使用情况。XPocket中的Top_X为Linux Top的增强版,可以显示CPU占用率/负载,CPU及内存进程使用
PerfMa社区上线一周年,小稳派福利啦~
2020/09/20 PerfMa成立三周年了,同时PerfMa技术社区上线也一周年了,做个小结,以慰时间之慨,也准备了一些礼物感谢大家。(记得看到最后哦~) PerfMa技术社区社区成立之初期望达到
【活动结果公布:兑奖见置顶评论】每日一签到,解锁你的PerfMa壕礼
叮......Perfma达人福利发车啦!社区每日签到解锁活动上线啦~除了每日签到必得积分奖励外,还为大家增加了壕礼相赠、解锁Perfma终极大奖等环节奖励 ~来Perfma社区留下你的签到足迹,告诉
官方文档竟然有坑!关于G1参数InitiatingHeapOccupancyPercent的正确认知 #我在性能调优路上的打怪日记#
问题前两天,一个群友在群中提出一个疑问:G1里的XX:InitiatingHeapOccupancyPercent,默认是45。他看网上有两种说法,一种是整个堆占用率超过45%时开始并发标记周期;另一
【全网首发】深入剖析 Golang 程序启动原理 - 从 ELF 入口点到GMP初始化到执行 main!
看似简简单单的一个 Golang 的 Hello World 程序,只要你愿意深挖,里面真的有极其丰富的营养的!
字节对齐与Java的指针压缩(下)-指针压缩
在上一篇文章[《字节对齐与Java的指针压缩(上)-字节对齐的渊源》](https://heapdump.cn/article/2545511)中我们讲到了字节对齐的部分渊源与Java选择8字节对齐的
记一次类加载失败导致线程阻塞问题排查
作为PerfMa解决方案管理部门的技术专家,我在工作遇见过很多各种问题导致的性能问题,并参与了为客户的系统进行性能诊断调优的全过程。这一次碰到了一个类加载失败导致的性能问题。用文字记录下了问题的整个发
又发现一个导致JVM物理内存消耗大的Bug(已提交Patch)
概述 最近我们公司在帮一个客户查一个JVM的问题(JDK1.8.0_191-b12),发现一个系统老是被OS Kill掉,是内存泄露导致的。在查的过程中,阴差阳错地发现了JVM另外的一个Bug。这个B
分享一次排查CLOSE_WAIT过多的经验
作者:踩刀诗人原文链接:https://www.cnblogs.com/chopper-poet/p/14618391.html 问题背景某日下午有测试人员急匆匆的跑来跟我反馈:“有客户反馈供应商附件
你确定你真的理解"双亲委派"了吗?!
最近一段时间,我在面试的过程中,很喜欢问双亲委派的一些问题,因为我发现这个问题真的可以帮助我全方位的了解一个候选人。记得前几天一次面试过程中,我和一位候选人聊到了JVM的类加载机制的问题,他谈到了双亲
从一起GC血案谈到反射原理
前言 首先回答一下提问者的问题。这主要是由于存在大量反射而产生的临时类加载器和 ASM 临时生成的类,这些类会被保留在 Metaspace,一旦 Metaspace 即将满的时候,就会触发 Fu
LONG究竟有多长,从皇帝的新衣到海康SDK
转眼之间初中毕业30年了,但我仍清楚的记得初中英语的一篇课文,题目叫《皇帝的新装》(“The king’s new clothes”)。这篇课文的前两句话是:”Long long ago, there
记一次堆外内存泄漏排查过程
本文涉及以下内容 开启NMT查看JVM内存使用情况 通过pmap命令查看进程物理内存使用情况 smaps查看进程内存地址 gdb命令dump内存块 背景最近收到运维反馈,说有项目的一个
据说99.99%的人都会答错的类加载的问题
概述首先还是把问题抛给大家,这个问题也是我厂同学在做一个性能分析产品的时候碰到的一个问题。 同一个类加载器对象是否可以加载同一个类文件多次并且得到多个Class对象而都可以被java层使用吗请仔细注意
g1源码之fullGC算法详解
关于g1的gc源码系列解析就剩下fullGC了,其实关于fullGC的源码方面并不是很难,相对于youngGC和mixed GC和并发标记来说,相对好阅读一些,网上也有一些文章是讲述fullGC的源码
CPU 优化高级篇:Java  CPU 高的原因和排查方法  :如何定位Java  消耗CPU最多的线程
之前有朋友反馈说发的内容希望有个梯度,逐步加深,前面发了几篇关于jvm源码分析的文章,可能我觉得我已经把内容写得浅显易懂了,但是对于某些没怎么接触的同学来说还是比较难理解,这个我以后慢慢改进吧,今天发
Spring Boot引起的“堆外内存泄漏”排查及经验总结
本文来自美团技术团队,作者纪兵https://tech.meituan.com/2019/01/03/spring-boot-native-memory-leak.html 背景为了更好地实现对项目的
Redis进阶:深入解读阿里云Redis开发规范(修订版)
Key命名设计:可读性、可管理性、简介性规范建议使用冒号即:进行分割拼接,因为很多Redis客户端是根据冒号分类的。比如有几个Key:apps:app:1、apps:app:2和apps:app:3。
记一次日志pattern参数设置不合理导致高CPU问题的排查
此问题是在为客户的系统进行压测时发现的,为了降低性能风险,对其进行了分析和改进。分享此案例也希望能给同学们一些启发和提醒。 问题现象:压测过程中发现应用服务器CPU消耗较高 分析过程: 首先根据链路/
高吞吐、低延迟 Java 应用的 GC 优化实践
本篇原文作者是 LinkedIn 的 Swapnil Ghike,这篇文章讲述了 LinkedIn 的 Feed 产品的 GC 优化过程,虽然文章写作于 April 8, 2014,但其中的很多内容和
【全网首发】一次想不到的 Bootstrap 类加载器带来的 Native 内存泄露分析
最近我们线上有同学反馈,java 服务在接入了支持预发的 javaagent 以后会出现缓存的内存增长,去掉 agent 启动以后内存增长正常。于是分析了一下这个问题,写了这篇文章。
跟Kafka学技术系列之时间轮
kafka的延迟队列使用时间轮实现,能够支持大量任务的高效触发,但是在kafka延迟队列实现方案里还是看到了delayQueue的影子,使用delayQueue是对时间轮里面的bucket放入延迟队列,以此来推动时间轮滚动,但是基于将插入和删除操作则放入时间轮中,将这些操作的时间复杂度都降为O(1)
Java语言
消失的死锁
问题描述如果java层面发生了死锁,当我们使用jstack命令的时候其实是可以将死锁的信息给dump出来的,在dump结果的最后会有类似Found one Java-level deadlock:的关
JVM源码分析之Metaspace解密
概述metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所致,看到大
在调试器里看LINUX内核态栈溢出
图灵最先发明了栈,但没有给它取名字。德国人鲍尔也“发明”了栈,取名叫酒窖。澳大利亚人汉布林也“发明”了栈,取名叫弹夹。1959年,戴克斯特拉在度假时想到了Stack这个名字,后来被广泛使用。
协助美团kafka团队定位到的一个JVM Crash问题
概述 有挺长一段时间没写技术文章了,正好这两天美团kafka团队有位小伙伴加了我微信,然后咨询了一个JVM crash的问题,大家对crash的问题都比较无奈,因为没有现场,信息量不多,碰到这类问题我
揪出一个导致GC慢慢变长的JVM设计缺陷
今天要给大家分享的内容和 YGC(Young GC)有关,是我最近碰到的一个案例,希望将排查思路分享给大家,如果大家后面碰到类似的问题,可以直接作为一个经验来排查。 我之前在公众号里其实写过几篇 Y
进程无故消失的破案历程
概述 前段时间公司有个系统的进程老是无故退出,在客户那边好好的,在家里服务器上老是出现,而且出现的时间也没啥规律,当然最终查出来还是有规律的,不过这个规律比较特别。大家看了后面的内容之后就明白了
性能优化:线程资源回收
一、问题模型服务平台的排序请求出现较多超时情况,且不定时伴随空指针异常。 二、问题发生前后的改动召回引擎扩大了召回量,导致排序请求的item数量增加了。 三、出问题的模型基于XGBoost预测的全排序
内存泄漏(增长)火焰图
本文总结了在分析内存增长和内存泄漏问题用到的4种追踪方法得到有关内存使用情况的代码路径,使用栈追踪技术对代码路径进行检查,并且会以火焰图的形式把它们可视化输出,在Linux上演示分析过程,随后概述其它系统的情况。
获奖名单公布丨PerfMa社区升级为HeapDump性能社区,整装再出发!
文末有彩蛋!!! 作为开发者,我们总会面临各种各样的性能问题。它们可能出现在应用层、数据库层、框架层、虚拟机层。大部分问题可以借助我们平时的经验解决,但有时候,我们也会碰到一些难以定位、分析
PerfMa童庭坚:全链路压测体系建设方案的思考与实践
日前杭州笨马CTO童庭坚接受了软件质量效能社区的邀请,与行业同仁分享了关于全链路压测体系建设方案的思考与实践。以下为本场直播的核心内容: 系统性能测试的几个痛点在金融、零售快消、物流、新能源等传统行业
JVM源码分析之jstat工具原理完全解读
概述jstat是hotspot自带的工具,和java一样也位于`JAVA_HOME/bin`下面,我们通过该工具可以实时了解当前进程的gc,compiler,class,memory等相关的情况,具体
关于内存溢出,咱再聊点有意思的?
概述 上篇文章讲了JVM在GC上的一个设计缺陷,揪出一个导致GC慢慢变长的JVM设计缺陷,可能有不少人还是没怎么看明白的,今天准备讲的大家应该都很容易看明白 本文其实很犹豫写不写,因为感觉没有
Java Reference核心原理分析
带着问题,看源码针对性会更强一点、印象会更深刻、并且效果也会更好。所以我先卖个关子,提两个问题(没准下次跳槽时就被问到)。 - 我们可以用ByteBuffer的allocateDirect方法,申请一
一次线上服务高 CPU 占用优化实践
线上有一个非常繁忙的服务的 JVM 进程 CPU 经常跑到 100% 以上,下面写了一下排查的过程。通过阅读这篇文章你会了解到下面这些知识。- Java 程序 CPU 占用高的排查思路- 可能造成线上
死磕一道面试题引发的对Java内存模型的一点疑问,第四部。
死磕一道面试题引发的对Java内存模型的一点疑问,JIT在将热点代码编译成机器码的时候就是单纯的不喜欢成员字段或者静态字段。或者说为了提高代码执行效率,只是这种意义一般人看不出来,需要从CPU执行指令的角度才能明白。虽然优化前和优化后这俩个变量hoistedStopRequested和stopReq
代表Java未来的ZGC深度剖析,牛逼!
JAVA程序最爽的地方是它的GC机制,开发人员不需要关注内存申请和回收问题。同时,JAVA程序最头疼的地方也是它的GC机制,因为掌握JVM和GC调优是一件非常困难的事情。在ParallelOldGC、
警惕大量类加载器的创建导致诡异的Full GC
概述 今天有个同事找我,其实好像之前就找过我,一直因为太忙,后面就忘记他的事了,到今天还没查出原因就又找了过来,现象是系统老是进行Full GC,在启动没过多久就会发生Full GC,这个现象相
Java8 Stream源码分析
Stream Stream是在Java SE 8 API添加的用于增强集合的操作接口,可以让你以一种声明的方式处理集合数据。将要处理的集合看作一种流的创建者,将集合内部的元素转换为流并且在管道中传
g1源码之Mixed GC与ConcurrentMark细节详解
继上次全面刨析了youngGC的源码后,这次笔者又阅读了关于Mixed GC的部分源码,相对于youngGC,Mixed GC部分更好阅读和理解一些(ps:不知道是不是因为已经有了读youngGC代码
一次线上JVM调优实践,FullGC40次/天到10天一次的优化过程
通过这一个多月的努力,将FullGC从40次/天优化到近10天才触发一次,而且YoungGC的时间也减少了一半以上,这么大的优化,有必要记录一下中间的调优过程。对于JVM垃圾回收,之前一直都是处于理论
JVM源码分析之不可控的堆外内存
概述 之前写过篇文章,关于堆外内存的,[JVM源码分析之堆外内存完全解读],里面重点讲了DirectByteBuffer的原理,但是今天碰到一个比较奇怪的问题,在设
关于数组动态扩容导致频繁GC的问题,我还有话说
概述 通过上篇[抓了一个导致频繁GC的鬼--数组动态扩容](https://heapdump.cn/article/123281)关于数组动态扩容导致频繁GC的文章或许GET到了这么一些点 -
谨防JDK8重复类定义造成的内存泄漏
概述 如今JDK8成了主流,大家都紧锣密鼓地进行着升级,享受着JDK8带来的各种便利,然而有时候升级并没有那么顺利?比如说今天要说的这个问题。我们都知道JDK8在内存模型上最大的改变是,放弃了Perm
注意:两个会导致druid性能下降10倍的参数
druid:阿里巴巴开源的为监控而生的数据库连接池。你看,官方都没有说是高性能数据库连接池,因为,在性能方面,HikariCP会说:我不是针对谁,论性能,在坐的各个数据库连接池都是渣渣。Github
记一次微服务耗时毛刺排查
前段时间的某天,注意到一个服务的平均耗时出现了如下图的毛刺现象。注意到毛刺出现极其规律,每30分钟出现一个毛刺。考虑到这种规律性,并结合服务的流量较小(20 QPS)推测,可能是某个定时请求的接口进行
网络IO 实战篇 :Java电商系统:重大事故!IO问题引发线上20台机器同时崩溃
几年前的一个下午,公司里码农们正在安静地敲着代码,突然很多人的手机同时“哔哔”地响了起来。本来以为发工资了,都挺高兴!打开一看,原来是告警短信 故障回顾告警提示“线程数过多,超出阈值”,“CPU空闲率
spring boot 引起的 “堆外内存泄漏”
背景组内一个项目最近一直报swap区域使用过高异常,笔者被叫去帮忙查看原因。发现配置的4G堆内内存,但是实际使用的物理内存高达7G,确实有点不正常,JVM参数配置是:```java-XX:Metasp
从CMS到G1:LinkedIn个人主页调优实战
LinkedIn中的个人主页是访问量最多的页面之一,它允许其他人访问你的个人主页,从而了解你的专业技能,经验和兴趣等: 所以,确保用户访问主页时以最快的速度返回是非常重要的。这篇文章,将谈论Li
不起眼,但是足以让你有收获的JVM内存分析案例
分析 这个问题说白了,就是说有些int[]对象不知道是哪里来的,于是我拿他的例子跑了跑,好像还真有这么回事。点该 dump 文件详情,查看相关的 int[] 数组,点该对象的“被引用对象”,发现所
为你总结了N个真实线上故障,从容应对面试官!
很多人在面试时,会被问到这样的问题:遇到过什么系统故障?怎么解决的?下面是笔者根据自己15年互联网研发经历总结的多个线上故障真实案例。相信可以帮你从容应对面试官的提问!本文图不多,但内容很干!理解为主
实战:OOM 后我如何分析解决的
现在很多面试官都会关心你是否有过解决内存泄漏的问题,是否有过JVM的调优经验。你如果没有经历过,该如何回答呢?希望下文对你有所帮助。 背景前不久,上线了一个新项目,这个项目是一个压测系统,可以简单的看
一次百万长连接压测 Nginx OOM 的问题排查分析
在最近的一次百万长连接压测中,32C 128G 的四台 Nginx 频繁出现 OOM,出现问题时的内存监控如下所示。排查的过程记录如下。 现象描述这是一个 websocket 百万长连接收发消息的压测
一次压缩引发堆外内存过高的教训
一、项目介绍lz_rec_push_kafka_consume该项目通过kafka与算法进行交互,通过push推荐平台(lz_rec_push_platform)预生成消息体。 二、问题背景发现项目的
一次有趣的 DNS 导致 Node 服务故障问题分析实录
有一个部署 k3s 的边缘节点的机器,切到离线模式以后,有一个前端页面的部分请求接口异常了。node 部分的请求分为两类,一种是纯 node 的处理,一种是需要先 http 请求后端微服务的处理接口。现象是涉及 Node 请求后端 Java 服务的都 block 住了,纯 node 处理的请求都飞快
【全网首发】typedef vs using
今天我们聊点点的知识点typedef & using😁。
深入理解 G1 的 GC 日志
本文基于1.8.0_201-b09对G1的GC日志进行分析。G1 模式下总计有 3 中日志级别,分别被称为:fine,finer,finest。- fine:fine模式打开方式是-verbose:g
分析和解决JAVA 内存泄露的实战例子
这几天,一直在为Java的“内存泄露”问题纠结。Java应用程序占用的内存在不断的、有规律的上涨,最终超过了监控阈值。福尔摩 斯不得不出手了! 分析内存泄露的一般步骤 如果发现Java应用程序占用的内
不可逆的类初始化过程
类的加载过程说复杂很复杂,说简单也简单,说复杂是因为细节很多,比如说今天要说的这个,可能很多人都不了解;说简单,大致都知道类加载有这么几个阶段,loaded-linked-initialized,为了
JVM源码分析之栈溢出完全解读
概述之所以想写这篇文章,其实是因为最近有不少系统出现了栈溢出导致进程crash的问题,并且很隐蔽,根本原因还得借助coredump才能分析出来,于是想从JVM实现的角度来全面分析下栈溢出的这类问题,或
记一次JVM堆外内存泄露Bug的查找
前言JVM的堆外内存泄露的定位一直是个比较棘手的问题。此次的Bug查找从堆内内存的泄露反推出堆外内存,同时对物理内存的使用做了定量的分析,从而实锤了Bug的源头。笔者将此Bug分析的过程写成博客,以飨
改善 Kubernetes 上的 JVM 预热问题
JVM 预热是一个非常头疼而又难解决的问题。本文讨论了在运行在 Kubernetes 集群中的 Java 服务如何解决 JVM 预热问题的一些方法和经验。 作者:Vikas Kumar 翻译:Bach
JDK的sql设计不合理导致的驱动类初始化死锁问题
问题描述当我们一个系统既需要mysql驱动,也需要oracle驱动的时候,在并发加载初始化这些驱动类的过程中产生死锁的可能性非常大,下面是一个模拟的例子,对于Thread2的实现其实是jdk里java
JVM参数系列 - 学习JVM参数前必须了解的
可以把JVM想象成相机,JVM参数想象成光圈大小,快门速度之类的参数值,这些参数对程序的运行会影响挺大。
频繁操作本地缓存导致YGC耗时过长
某天,某位群友在JVM讨论群里发来一张GC log的图片。其中主要的问题是YGC过长,每次耗时约为200ms。使用的JVM参数如下:```java-Xmn2048m -Xms4096m -Xmx409
记录一次Flink作业异常的排查过程
最近2周开始接手apache flink全链路监控数据的作业,包括指标统计,业务规则匹配等逻辑,计算结果实时写入elasticsearch. 昨天遇到生产环境有作业无法正常重启的问题,我负责对这个问题
JVM Metaspace内存溢出排查与总结
现象前段时间公司线上环境的一个Java应用因为OOM的异常报警,导致整个服务不可用被拉出集群,本地模拟重现的现象如下:当时的解决方案是增加metaspace的容量:-XX:MaxMetaspaceSi
这么流行的ZooKeeper,原来是这样设计的!
为什么会有ZooKeeper 我们知道要写一个分布式应用是非常困难的,主要原因就是局部故障。一个消息通过网络在两个节点之间传递时,网络如果发生故障,发送方并不知道接收方是否接收到了这个消息。有可能是收
OutOfMemoryError之unable to create new native thread原因分析及6种解决方案
java.lang.OutOfMemoryError:unable to create new native thread 是比较常见的一种异常,表示应用程序无法创建新的线程。产生该异常,总体上可总结
JVM Code Cache空间不足,导致服务性能变慢
有业务反馈,线上一个应用运行了一段时间之后,在高峰期之后,突然发现处理能力下降,接口的响应时间变长,但是看Cat上的GC数据,一切都很正常。通过跳板机上机器查看日志,发现一段平时很少见到的日志:```
用crash工具分析Linux内核死锁的一次实战
背景知识点ramdump是内存转存机制,我们可以在某个时刻把系统的内存转存到一个文件中,然后与符号信息(vmlinux)一起导入到trace32或crash等内存分析工具中做离线分析。是分析崩溃、死锁
Kafka 顺序消费线程模型的实践与优化
各类消息中间件对顺序消息实现的做法是将具有顺序性的一类消息发往相同的主题分区中,只需要将这类消息设置相同的 Key 即可,而 Kafka 会在任意时刻保证一个消费组同时只能有一个消费者监听消费,因此可
如何使用Linux内核中没有被导出的变量或函数?
本文详细介绍了使用EXPORT_SYMBOL宏导出函数或变量、使用kallsyms_lookup_name()查找函数或变量的虚拟地址以及内核模块中直接使用内核函数的虚拟地址等3种方案解决没有被EXPORT_SYMBOL 相关的宏导出的变量或函数不能直接使用的问题
JDK ThreadLocal 源码深度剖析及注意点分享
概述 ```ThreadLocal``` 顾名思义,就是“线程局部”的意思,换句话说就是属于某个线程的局部对象,其他线程是没法访问到的,亦即该对象不存在线程安全的问题,因为不可能被多线程访问到,
AsyncGetCallTrace 源码深度剖析
前言 AsyncGetCallTrace 是由 OracleJDK/OpenJDK 内部提供的一个函数,该函数可以在 JVM 未进入 safepoint 时正常获取到当前线程的调用栈(换句话说,使用
Java多线程——并发测试
编写并发程序时候,可以采取和串行程序相同的编程方式。唯一的难点在于,并发程序存在不确定性,这种不确定性会令程序出错的地方远比串行程序多,出现的方式也没有固定规则。那么如何在测试中,尽可能的暴露出这些问
又抓了一个导致频繁GC的鬼--数组动态扩容
概述 本周有个同事过来咨询一个比较诡异的gc问题,大概现象是,系统一直在做cms gc,但是老生代一直不降下去,但是执行一次jmap -histo:live之后,也就是主动触发一次full gc之后
JAVA线上故障排查套路
线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基
GC一些长时间停顿问题排查及解决办法
对于许多企业级应用,尤其是OLTP应用来说,长暂停很可能导致服务超时,而对这些运行在JVM上的应用来说,垃圾回收(GC)可能是长暂停最主要的原因。本文将描述一些可能碰到GC长暂停的不同场景,以及说明我
使用Go语言实现Attach到目标JVM进程
0x00 Java Attach API的基本使用在JVM运行时加载一个Agent的jar包是Java agent的一种更加灵活的实现方式,因为动态Attach时不需要停止目标JVM进程,这个特性给J
ZGC什么时候会进行垃圾回收
以往的一些GC算法,比如CMS、G1,均采用分代的思想对堆内存进行划分,对应的GC行为也可以分为Young GC、Old GC 和 FGC。但是在ZGC算法中,并没有分代的概念,所以就不存在Young
XPocket插件jstack_x助力线程问题排查
在程序开发过程中,开发人员通常会遇到许多线上问题,这些问题可能是代码Bug导致的,也可能是性能问题引起的。这些线上问题都会通过CPU飙升、GC频繁、抛出OOM异常等情况表现出来,这些问题的根因很可能是
什么?搞不定Kafka重复消费?
今天我们聊一个话题,如何保证 Kafka 消息不重复消费?在使用 Kafka 的时候一般都会设置重试的次数,但是因为网络的一些原因,设置了重试就有可能导致有些消息重复发送了(当然导致消息重复也有可能是其他原因),那么怎么解决消息重复这个问题呢?
LINUX网络子系统中DMA机制的实现
我们先从计算机组成原理的层面介绍DMA,再简单介绍Linux网络子系统的DMA机制是如何的实现的。 计算机组成原理中的DMA 以往的I/O设备和主存交换信息都要经过CPU的操作。不论是最早的轮询方式,
大数据中台之Kafka,到底好在哪里?
Hello,大家好,今天给大家分享一个大数据里面很火的技术——Kafka,Kafka 是一个分布式的消息系统,其高性能在圈内很出名。本人阅读过多个大数据生态的开源技术的源码,个人感觉 Kafka 的源
使用NMT和pmap解决JVM资源泄漏问题
编者按:笔者使用JDK自带的内存跟踪工具NMT和Linux自带的pmap解决了一个非常典型的资源泄漏问题。这个资源泄漏是由于Java程序员不正确的使用Java API导致的,使用Files.list打
Java OOM 高级篇:体验了一把线上CPU100%及应用OOM的排查和解决过程
问题现象 【告警通知-应用异常告警】简单看下告警的信息:拒绝连接,反正就是服务有问题了,请不要太在意马赛克。 环境说明Spring Cloud F版。项目中默认使用 spring-cloud-sleu

有开始,就会有进​步!

在追求性能的道路上,记录每一刻的成长!源码解读,编程技巧,外文翻译,技术实践,线上案例等等,记录自己,启发他人!

专家作者推荐

巡山小汪

关注微信公众号《解Bug之路》,有问题请在公众号中咨询:) 无论多么艰苦的时刻,都不要忘记,辉煌的未来,在你的眼中闪耀!

飞哥开发内功

《深入理解Linux网络》作者,腾讯搜狗十年工程师,公众号「开发内功修炼」作者!

踩刀诗人

聊聊技术,唠唠段子,偶尔做菜写诗,欢迎关注我的公众号 踩刀诗人

Brand

搜索关注微信公众号【架构与思维】:撰稿者为bat、字节的几位高阶研发/架构,专注技术分享。

专题推荐

本专题精选了HeapDump性能社区中的8篇数据库性能优化相关文章,这些文章内不仅包含了影响数据库性能的因素,数据库性能评估标准、优化方法的内容,还介绍了一些数据库设计原则和编程技巧,并且记录了一些或大或小的实战案例,帮助大家快速了解数据库性能优化,掌握一些实操技能。
8篇文章17388阅读量
对于刚刚接触 JVM 的同学来说,JVM 就像一个黑盒一样,完全不知道这是一个什么东西。所以对于小白来说,最重要是搞清楚 JVM 到底是干嘛的,以及其常用的知识框架。针对这样的需求,才有了这个专题,从零开始循序渐进地介绍了 JVM,相信是很不错的 JVM 入门教程。
15篇文章44153阅读量