
实战问题汇总
文章平均质量分 80
真实线上操作案例
J_HelloWorld
这个作者很懒,什么都没留下…
展开
-
日志组件导致的内存溢出问题分析
查看 HttpServletRequest 说明发现该类包含大量的内部状态和引用,比如输入流、会话信息、请求头等,直接序列化这些信息可能会形成循环引用或过于庞大,导致序列化过程占用过多内存甚至进入无限循环。初看也没发现什么问题,断点发现卡在了 new Gson().toJson(arg) ,断点调试跟进发现入参类型为 HttpServletRequest ,难道它不可直接打印?普通的http请求,导致堆内存直接溢出,看了下代码实现非常简单的一次DB查询且数据量也比较小,不可能导致内存溢出呢。原创 2024-08-23 20:02:56 · 1000 阅读 · 0 评论 -
分析 Runtime.getRuntime() 执行阻塞原因
猜测是流读取导致的阻塞,回到开始看下 Process 的源码,发现文档说明中表示 Runtime.exec()创建的子进程公用父进程的流,父进程的stream buffer可能被打满导致子进程阻塞,从而永远无法返回。因为错误的流读取方式导致线程阻塞,虽然调整成先读取正常 input 流可以正常运行了,但是也存在全部输入为异常流,正常流无法读取的情况,所以最好的方式还是异步同时读取俩种流。输入缓冲区空:如果子进程需要从标准输入(stdin)读取数据,而父进程没有及时提供输入,子进程将阻塞,等待输入数据。原创 2024-08-21 11:23:48 · 1153 阅读 · 0 评论 -
问题排查利器 - 分布式 trace
分布式跟踪的目标是收集和分析整个分布式系统中的请求路径和性能数据,以便开发人员可以更好地理解系统中的瓶颈和问题。它通过在应用程序的不同组件之间传递唯一的标识符(通常称为跟踪 ID)来实现这一点,以便跟踪一个请求在系统中的流动。上图中的 span_id 可以理解为应用标记ID,而 trace_id 是请求标记ID,贯穿整个请求且保持不变的。当一个请求进入分布式系统时,它被赋予一个唯一的跟踪 ID。原创 2024-02-05 19:22:32 · 1904 阅读 · 0 评论 -
ES 数据插入异常原因分析
Springboot 执行 ES 单元测试时发生上述异常 , 看提示应该是因为使用了 ignore_throttled 过期参数导致的,但是我的查询并没有使用这个字段,那它是从哪里来的呢?先 debug 查看异常处代码 Response.assertWarningValue这段代码是从 es 请求的响应中提取告警信息,判断是否符合断言,该正则表达式分为三部分对比运行时异常信息发现,299 Elasticsearch-7.17.13-2b211dbb8bfdecaf7f5b44d356bdfe54b10原创 2024-01-23 18:58:00 · 1818 阅读 · 0 评论 -
Java 应用常见问题分析
在JVM中,常见的线上问题包括但不限于内存泄露、CPU飙升、线程死锁、响应变慢、垃圾回收问题、类加载问题、网络问题、日志问题、配置文件问题和安全性问题。这些问题可能会导致系统性能下降、应用程序崩溃、功能无法正常使用等严重后果。为了确保应用程序的稳定运行,需要定期监控和调优JVM,及时发现和解决这些问题。原创 2024-01-17 16:55:49 · 1015 阅读 · 0 评论 -
maven相关
maven总结原创 2022-10-12 21:09:14 · 386 阅读 · 1 评论 -
日志异常分析记录
logback异常问题分析原创 2022-07-04 23:10:56 · 5106 阅读 · 1 评论