JVM源码分析之jstat工具原理完全解读
概述jstat是hotspot自带的工具,和java一样也位于`JAVA_HOME/bin`下面,我们通过该工具可以实时了解当前进程的gc,compiler,class,memory等相关的情况,具体
XPocket插件jstack_x助力线程问题排查
在程序开发过程中,开发人员通常会遇到许多线上问题,这些问题可能是代码Bug导致的,也可能是性能问题引起的。这些线上问题都会通过CPU飙升、GC频繁、抛出OOM异常等情况表现出来,这些问题的根因很可能是
fastJson与一起堆内存溢出'血案'
现象- QA同学反映登录不上服务器 排查问题1--日志级别- 查看log,发现玩家登录的时候抛出了一个java.lang.OutOfMemoryError - 大概代码是向Redis序列化一个Pla
火焰图:全局视野的Linux性能剖析
什么是火焰图火焰图(Flame Graph)是由Linux性能优化大师Brendan Gregg发明的,和所有其他的trace和profiling方法不同的是,Flame Graph以一个全局的视野来
如何使用Eclipse内存分析工具定位内存泄漏
本文以我司生产环境Java应用内存泄露为案例进行分析,讲解如何使用Eclipse的MAT分析定位问题 背景11月10号晚上8点收到报警邮件,一看是OOM打开公司监控系统查看应用各项指标发现JVM中老年
代码优化日记 ——火焰图找问题代码
一、问题背景- 排序服务,用于推荐item分数预测,详细项目背景及排序请求执行逻辑可参考之前的一篇文章 :《[性能优化:线程资源回收](https://heapdump.cn/user/708
JVM CPU Profiler技术原理及源码深度解析
引言研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈。Profiling技术是一种在应用运行时收集程序相关信息的动态分析手段,常用的JVM Profiler可以从多个方面
看了 Spring 官网脚手架真香,也撸一个 SpringBoot DDD 微服务的脚手架!
作者:小傅哥博客:[https://bugstack.cn](https://bugstack.cn) 沉淀、分享、成长,让自己和他人都能有所收获!😄 一、前言`为什么我们要去造轮子?`造轮子的核心
Java 虚拟机进程状态管理工具 jps 失效?吓尿了!
寒冬了,服务器资源也要节约这用。以前,我们一个人可以申请多个机器进行一些分布式的系统部署和测试,包括一些微服务方面的项目我们尽量的模拟多台机器的环境。但是现在,公司为了进一步节约成本开支,把一些机器进
关于JConsole里的“执行GC”按钮与System.gc()的关系
前言JConsole里的可以执行的gc这里的GC是立即执行,还是与代码里写System.gc()一样,是由jvm决定什么时候来执行的?执行的是minor gc,还是full gc,还是根据特定区域执行
这个Bug的排查之路,真的太有趣了。 #论程序员,你曾遇到关于性能的那些事#
在《深入理解Java虚拟机》一书中有这样一段代码:```public class VolatileTest { public static volatile int race = 0; p
JFR定位线上问题实例 - JFR导致的雪崩问题定位与解决
最近发现一个应用,使用默认的 JFR 配置,发生了类似于雪崩的现象,这里记录下,引以为戒。 Key takeaways1. JFR 的线程堆栈 dump 采集默认周期是everyChunk,也就是每次
实战生产问题:真的别再使用TimerTask了!
问题背景说说大概的场景吧。由于系统里面增加了权限的限制,不同用户拥有不同的数据权限。当前的方案是查询用户uid和对应的数据列表存放在本地内存里,并且需要定时捞取对应的关系数据存储在本地缓存LocalC
XPocket插件中心|JStack_X、Top_X插件上新,欢迎下载使用
为了给你带来更好的产品体验,请认真填写这份问卷:[XPocket插件中心调研问卷](XPocket插件中心调研问卷)你最想要我们在XPocket插件中心上新哪些插件?请在评论区留言、或填写问卷、或可以
记一次通过Arthas定位解决spring-boot中内嵌tomcat的Bug问题
背景公司有个渠道系统,专门对接三方渠道使用,没有什么业务逻辑,主要是转换报文和参数校验之类的工作,起着一个承上启下的作用。最近在优化接口的响应时间,优化了代码之后,但是时间还是达不到要求;有一个诡异的
线上排障技巧 | 动态修改LOGGER级别
前言大多数情况下,我们会在打印日志时定义日志的LOGGER级别,用来控制输出的信息范围。一方面,过多的输出会影响查看日志的效率,另一方面,过少的日志让问题定位变得困难。但当线上出现问题时,线上容器通常
一次系统调用时间过长追踪完整教程案例
Ftrace简介Ftrace是Linux进行代码级实践分析最有效的工具之一,比如我们进行一个系统调用,出来的时间过长,我们想知道时间花哪里去了,利用Ftrace就可以追踪到一级级的时间分布。 Ftra
使用XPocket插件JConsole排查线上OOM异常案例
XPocket插件JConsole主要用于内存问题的排查,能够对堆中的Eden、Survivor、Old区以及堆外的Metaspace、Code Cache等区域进行观察。我们在使用JConsole时
借助Xpocket中的perf插件 了解cpu热点函数的抓取原理
本文使用了xpocket工具包的插件链接xpocket地址: [https://plugin.xpocket.perfma.com](https://plugin.xpocket.perfma.com
记一次因 Redis 使用不当导致应用卡死 bug 的排查及解决!
首先说下问题现象:内网sandbox环境API持续1周出现应用卡死,所有api无响应现象刚开始当测试抱怨环境响应慢的时候 ,我们重启一下应用,应用恢复正常,于是没做处理。但是后来问题出现频率越来越频繁
通过一个线上调优例子了解JMC 与 Event 结构与详细配置
查看 JFR 事件的工具 - JMC (Java Mission Control)首先打开 jmc,我们通过 “文件” - “打开文件” 来打开一个 jfr 文件。 由于 JFR 文件里面的数据要全部
Java Flight Recorder - 事件机制详解
编者按:Java Flight Recorder(简称为JFR)曾经是 Oracle JDK 商业版的附属组件,在 JDK 11 中正式开源,后又被移植到 JDK8 中。JFR对本身应用的侵入性很小,
一张图看懂linux内核中percpu变量的实现
我们在使用各种编程语言进行多线程编程时,经常会用到thread local变量。所谓thread local变量,就是对于同一个变量,每个线程都有自己的一份,对该变量的访问是线程隔离的,它们之间不会相
记一次使用VJMap排查频繁YGC的经历
VJMap概述分代版的jmap(新生代,存活区,老生代),是排查内存缓慢泄露,老生代增长过快原因的利器。因为jmap -histo PID 打印的是整个Heap的对象统计信息,而为了定位上面的问题,我
XPocket插件使用案例合集——性能问题排查分析,一个XPocket足以!
你是否遇到过这些问题? - 系统存在性能问题 - 问题排查时一头雾水,不知道用什么工具 - 查找工具,下载和安装都很浪费时间 - 排查问题十分繁琐,想尽量简化排查方案以供后续使用XPocket是Per
【5】性能测试平台从设计到实现-如何选择适合自己的压力模型
性能测试平台从设计到实现的第六篇,如何选择适合自己的压力模型,本文从实际业务场景出发,介绍两大类场景并发数和QPS下的压力模型构造方法,及在引擎提供的基础能力上,如果简化这部分的工作。
【4】性能测试平台从设计到实现-玩转压测脚本之场景化压测
性能测试平台从设计到实现的第五篇,玩转压测脚本之场景化压测,本文是第四篇如何玩转脚本的姊妹篇,以春运活动为例,讲解了场景化压测脚本的编写方法
【2】性能测试平台从设计到实现-中控系统之资源管理
性能测试平台从设计到实现的第三篇,中控系统之资源管理,本文主要介绍了资源管理中的四要素,即用例、数据、压力模型和执行节点。
【全网首发】案例分享-https证书链不完整导致请求失败
通过一个案例分享一款https证书链补全工具,顺带了解一些附带知识
【7】性能测试平台从设计到实现-报告指标深度解读及通过标准评估
性能测试平台从设计到实现的第八篇,报告指标的详解解读及个人实践经验总结。本文讲述了在生成压测报告后,对报告中各指标的含义进行解读。并对应给出本次压测是否符合预期的评估标准。
【6】性能测试平台从设计到实现-报告初步解读和平台的增强优化
性能测试平台从设计到实现的第七篇,报告初步解读和平台的增强优化。本文讲述了在压测中和压测结束后,针对报告的解读方法,需关注的指标以及平台所做的增强型优化功能
spring-data-redis 上百万的 QPS 压力太大连接失败,我人都傻了
大家好,我们最近业务量暴涨,导致我最近一直人都傻了。前几天晚上,发现由于业务压力激增,某个核心微服务新扩容起来的几个实例,在不同程度上,出现了 Redis 连接失败的异常:```org.springf
【3】性能测试平台从设计到实现-如何玩转压测脚本
性能测试平台从设计到实现的第四篇,如何玩转压测脚本,本文主要介绍了Gatling引擎的scala脚本的常用写法,直接拿走不用谢~
【全网首发】设计了一个自动归档工具
分享一个我年初设计的自动归档功能,如何将一些思考融入到简单的CRUD中
【全网首发】分享一次机房出口带宽跑满的案例
工作这么多年,带宽跑满这事也只是听说过,倒没亲身经历过,通过一个案例了解基本概念和一些常规手段
【1】性能测试平台从设计到实现-中控系统
性能测试平台从设计到实现的第二篇,中控系统,本文主要介绍了中控系统的任务管理的新建任务功能,将任务所需的各类资源按照步骤进行拆分,映射到资源管理模块下的各个子模块中,可复用,可新建【支持保存】。任务从创建到实时执行查看到执行完成回看的全过程。
【0】性能测试平台从设计到实现-开篇
性能测试平台从设计到实现-开篇;从背景介绍、目标价值和特征分析三个方面,对性能测试平台的建设进行阐述
在 VS Code 中使用 GraalVM 和 VisualVM 进行性能和内存分析
Jetbrain最近的一项调查显示,大约五分之一的Java开发人员使用了visual vm,这使得它成为生态系统中使用最广泛的性能分析工具。在最近发布的GraalVM 21.2中,我们改进了VS Co
JVM系列之:关于HSDB的一点心得
之前未接触过 HSDB 工具,在深入学习反射时,研究其源码时需要了解生成的字节码文件,恰巧看到别人使用了 HSDB 工具,因此花时间学习了一番。HSDB(Hotspot Debugger),是一款内置于 SA 中的 GUI 调试工具,可用于调试 JVM 运行时数据,从而进行故障排除。&nb
Linux 网络分析必备技能:tcpdump 实战详解
相对于其它 Linux 工具而言,tcpdump 是复杂的,但是也是非常有用的!
JVM故障分析及性能优化系列之七:使用MAT的Histogram和Dominator Tree定位溢出源
原文链接:https://www.javatang.com/archives/2017/11/08/11582145.html上一篇文章概括的介绍了JVM Heap Dump文件生成的方式以及内存分析
学会这个Thread Dump分析工具,让您秒变性能分析大师!
每次分析thread dump,我都会用肉眼扫描这dump中的线程状态,并企图发现可能存在的死锁,十几万行太难了!有时候记不太清楚各种等待、阻塞的原因,我都偷偷打开一篇博客边看边分析,很明显我还没把原
【8】性能测试平台从设计到实现-运维监控指标的解读
性能测试平台从设计到实现的第九篇,运维监控指标的解读。本文讲述了被测服务与发压机的运维角度需关注的指标,包括硬件相关指标和服务相关指标。
字节跳动端智能工程链路 Pitaya 的架构设计
Pitaya是由字节跳动的Client AI 团队与 MLX 团队共同构建的一套端智能工程链路,为端智能应用提供从开发到部署的全链路支持。
如何从抓包文件中分析慢请求
请求慢的原因很多,当出现前端反应接口慢时,而通过后端日志查看请求处理时间并不慢时,往往会手足无措,当面对网络问题出现手足无措时,这就是在提醒你该抓包分析了,那么一般如何根据抓包文件去分析慢请求呢,今天我们就来看看。
【全网首发】剖析CPU性能火焰图生成的内部原理
在进行CPU性能优化的时候,我们经常先需要分析出来我们的应用程序中的CPU资源在哪些函数中使用的比较多,这样才能高效地优化
【全网首发】抛砖系列之redis监控命令
分享几个我最近掌握的redis监控工具,希望能给你带来一些帮助
Arrivals 线程组的一点解释
 概述Arrivals 线程组,基本用法就是通过设计预期的总吞吐量,让系统计算需要的线程数。此时的线程数就是平均并发数如果单线程的业务处理时间是 2s/笔,也就是吞吐量为 0.5 笔/s,此时想达到 10 笔/s 就至少需要 20 个线程同时处理;如果单线程的业务处理时间
设计和实现的对比:4种常见堆分析器进行内存泄漏故障排除
了解如何使用常见的堆分析器以及如何设计和实现 Go 堆分析器、gperftools、jemalloc 和 Bytehound 等分析器。
小闪对话:阅读源码的关键思路
本次对话帮助大家快速理清阅读源码的关键思路,下篇会对话阅读源码的实战技巧,目录在文末。
【云原生•监控】夜莺监控系统的可观测性实操 - 1
笔者已经在公有云上搭建了一套临时环境,可以先登录体验下
推荐几个我近期排查线上http接口偶发415时用到的工具
近期有一个业务部门的同学反馈说他负责的C工程在小概率情况下SpringMvc会返回415,通过输出的日志可以确定是SpringMvc找不到content-type这个头了,具体为什么找不到了呢?
Prometheus 服务完整部署
grafana加入了一些新的功能描述,比如允许跨域访问,自定义侧边栏,免密登录等
使用 FastThread 以及 GCEasy 分别针对线程dump文件以及GC日志文件进行离线分析
概述FastThread 以及 GCEasy分别针对线程dump文件以及GC日志文件的离线分析工作,可快速直观的定位到相关的性能问题。 前置准备 针对目标进程分别生成线程dump文件以及GC日志文件使
Prometheus 云原生kubernetes服务发现原理图解
Discoverer基于不同协议发现采集点,通过channel通知到updater协程,然后更新到discoveryManager结构体trargets字段中,最终由sender协程将discoveryManager的targets字段数据发送给scrape采集模块。
【译】Lightrun - 调试Java程序生产问题的优秀工具
Lightrun易于使用,但功能非常强大,因为我们可以使用指标注入日志、收集快照或检测我们的代码,而无需更改需要重新部署的生产源代码。

有开始,就会有进​步!

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

专家作者推荐

巡山小汪

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

飞哥开发内功

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

踩刀诗人

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

Brand

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

专题推荐

相比于后端遇到的各种复杂性能问题,前端的性能相对简单,但是简单不代表容易,前端的技术更新迭代快,那么针对性能问题自然也会出现各种变种,需要各种新的工具和思路。
HeapDump性能社区将引进更多前端相关大佬,来给大家分享前端性能的那些事儿。本期先从前端性能基础开始:
5篇文章7047阅读量
数据库最容易成为整个系统的性能瓶颈,本期专题向大家介绍日常工作中常见的数据库性能问题,干货+性能调优实践帮你攻克数据库性能瓶颈!
8篇文章20414阅读量