解决神秘的 JVM Safepoint 问题:从问题到解决方案的探索之旅2022年6月19日·2347 字·5 分钟深入探讨诊断和解决生产 JVM 问题,其中应用在每小时日志同步任务期间会冻结。我们探索 safepoint 分析、JVM 日志输出阻塞、异步日志实现和 WebFlux 优化以实现完整解决方案。
解决 JVM Safepoint 延迟:从 EFS 集成到异步日志的探索之旅2022年6月16日·2317 字·5 分钟深入调查升级到 Java 17 并实施 AWS EFS 集中式日志收集后出现的神秘 JVM safepoint 延迟问题。我们发现日志输出期间的文件 I/O 阻塞如何冻结整个 JVM 进程,并通过异步日志和正确的 WebFlux 实现解决了这个问题。
Spring Boot 升级后内存问题排查:深入探讨 ResolvableType 对象创建2022年2月28日·2212 字·5 分钟调查升级到 Spring Boot 2.4.6 + Spring Cloud 2020.0.x 后过度内存分配和 YoungGC 频率增加的问题,揭示 BeanUtils.copyProperties 如何在 Spring 5.3.x 版本中创建大量 ResolvableType 对象而不进行缓存。
MySQL 优化器统计:为什么你的查询选择了错误的索引2022年2月24日·3158 字·7 分钟深入探讨 MySQL 的 InnoDB 优化器统计以及采样不准确如何导致索引选择不当,造成相似查询之间的显著性能差异。学习防止由优化器误判导致的慢 SQL 查询的实用解决方案。
一个奇怪的 Bug 追踪:当异常失去声音时2021年8月9日·1924 字·4 分钟深入探讨一个神秘的生产问题,其中异常日志神秘消失,引导我们通过 Arthas 调试、Log4j2 内部机制,以及发现异常的 getMessage() 方法本身由于 Guava-Guice 版本不兼容而抛出异常。
通过 SQL 优化发现的隐藏生产问题2021年8月7日·1800 字·4 分钟当我们的运维团队带来一个执行时间极长的复杂 SQL 查询时,我们以为这只是一个性能问题。我们不知道,这次调查会发现一个深深隐藏的字符编码不匹配问题,它一直在我们的生产数据库中默默地导致全表扫描。