老废物乐园 瓜子的技术笔记 · Java / AI / 金融科技

Arthas 上手:不重启应用定位线上问题

问题:一个只在生产出现的接口变慢 九月下旬,客服反馈"订单详情页打开很慢"。我在测试环境怎么点都是 80ms,生产上就是 3 秒左右。 按以前的办法,要么加日志重新发版(生产发一次要走流程,至少半小时),要么 jstack 抓线程栈(只能看某一瞬间的状态,看不到耗时分布)。这次我试了下 Arthas

遥望星星 遥望星星 发布于 2020-04-11

G1 收集器调优实战:从 CMS 迁移的得与失

为什么要从 CMS 迁到 G1 我们在 JDK 8 上跑 CMS 跑了两年多,一直相安无事。真正推动迁移的是两件事。 第一件是碎片问题终于爆了。四月份的一个凌晨,promotion failed 触发了 Serial Old 单线程 Full GC,整个应用 STW 了 11.4 秒: 2020-0

遥望星星 遥望星星 发布于 2020-02-28

JVM 参数模板:一个生产环境该配什么

七个服务七套 JVM 参数,我整理了一份模板 4 月底盘了一遍生产上 7 个微服务的启动参数,发现全是复制粘贴来的,来源各不相同: user-service: -Xms512m -Xmx2g order-service: -Xms4g -Xmx4g -Xmn2g -XX:+UseG1GC

遥望星星 遥望星星 发布于 2019-12-26

垃圾回收算法与常见收集器对比

面试官问"你们生产用哪个收集器",我答不上来 11 月中旬的一次面试,面试官问:"你们生产 JVM 用的什么垃圾收集器?为什么选它?" 我当时的回答是"默认的,没配过"。面试官点了点头没追问,但我知道这题挂了。回去之后把 GC 这块从头看了一遍,顺便把我们线上的 GC 日志翻出来分析了下,发现确实该

遥望星星 遥望星星 发布于 2019-09-24

JVM 类加载机制与双亲委派模型

上线时那个 NoSuchMethodError:两个 jar 里有同一个类 8 月底发版,新功能上线后立刻报了一堆错: 2019-08-27 20:14:32.881 ERROR [http-nio-8080-exec-3] c.x.web.ExceptionHandler - Handler

遥望星星 遥望星星 发布于 2019-08-13

对象真的不可达才被回收吗?finalize 与引用类型

MAT 里那个 12 万的 java.lang.ref.Finalizer 8 月初排查一个服务的老年代增长,dump 下来用 MAT 打开,Dominator Tree 里第三名是 java.lang.ref.Finalizer,12.4 万个实例,占了 210 MB。我当时看不懂这是个什么类,点

遥望星星 遥望星星 发布于 2019-08-07

jmap、jstat、jstack 三板斧排查内存问题

运维在群里 @ 我:你们这个服务内存一直在涨 那天下午运维丢了一张图到群里,是 Zabbix 上我们订单服务的 JVM 内存曲线,从早上 9 点的 1.2 GB 一路爬到下午 4 点的 3.8 GB,容器限制是 4 GB。他问:这是不是内存泄漏? 我当时的第一反应是想 dump 下来看,被带我的师兄

遥望星星 遥望星星 发布于 2019-07-13

一次 Metaspace OOM 的排查:动态代理类撑爆元空间

凌晨三点的告警:Metaspace OOM 3 月 15 号凌晨 3 点 12 分,监控告警把值班同学叫起来了:报表服务的一台实例 Full GC 频繁,接口全部超时。我早上到公司看日志,第一行就是: java.lang.OutOfMemoryError: Metaspace at java

遥望星星 遥望星星 发布于 2019-05-22

JVM 内存区域划分与第一次遇到 Java heap space

入职第三个月,我把线上服务搞 OOM 了 那是个导出报表的功能。测试环境数据量小,跑得飞快;上线之后运营点了一次"导出全部",三分钟后服务就挂了。监控上堆内存是一条 45 度的斜线,直接顶到天花板然后掉底。 我登机器捞日志,看到了人生中第一个这个: Exception in thread "http

遥望星星 遥望星星 发布于 2019-03-16

GC 日志怎么读?从一行日志看懂一次 Young GC

师傅甩给我一段 GC 日志,我一个字都看不懂 上个月排查一个接口抖动的问题,师傅在机器上敲了一串命令,屏幕上刷出这么一段东西: 2018-07-05T14:23:11.482+0800: 6.291: [GC (Allocation Failure) [PSYoungGen: 524288K->43

遥望星星 遥望星星 发布于 2019-02-02