<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Performance on Neat Guy Coding</title><link>https://neatguycoding.com/zh-cn/categories/performance/</link><description>Recent content in Performance on Neat Guy Coding</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>© 2026 NeatGuyCoding</copyright><lastBuildDate>Mon, 01 Dec 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://neatguycoding.com/zh-cn/categories/performance/index.xml" rel="self" type="application/rss+xml"/><item><title>全网最硬核 JDK 解析 - 7. JFR 事件采集原理与演进</title><link>https://neatguycoding.com/zh-cn/posts/tough-jdk-7-jfr-conf-usage/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/tough-jdk-7-jfr-conf-usage/</guid><description>全面解析 JFR（Java Flight Recorder）的配置体系、使用方式和事件采集机制。涵盖 JFR 配置体系（全局配置、记录级别配置、JFC 配置文件）、多种使用方式（JVM 参数、jcmd 命令、JDK API、JMX）、jfr 工具分析、事件类型分类与配置适用性，以及从 JDK 11 到 JDK 25 的核心变化和最佳实践。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/tough-jdk-7-jfr-conf-usage/featured.jpg"/></item><item><title>为什么应该避免在生产环境中启用 HeapDumpOnOutOfMemoryError</title><link>https://neatguycoding.com/zh-cn/posts/java-oom/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/java-oom/</guid><description>全面指南，探讨为什么启用 HeapDumpOnOutOfMemoryError 会在生产环境中导致严重的性能问题，哪些 OutOfMemoryError 类型实际触发堆转储，以及使用 JFR 进行内存泄漏检测和自动服务重启策略等更好的替代方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/java-oom/featured.jpg"/></item><item><title>PostgreSQL vs MySQL：为你的 OLTP 工作负载找到合适的选择</title><link>https://neatguycoding.com/zh-cn/posts/pgsql-mysql/</link><pubDate>Wed, 01 May 2024 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/pgsql-mysql/</guid><description>PostgreSQL 和 MySQL 在 OLTP 场景下的全面比较，探讨它们在二级索引处理和 MVCC 实现方面的根本架构差异，以及何时选择每个数据库的实用见解。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/pgsql-mysql/featured.jpg"/></item><item><title>GraalVM Native Image 进程能否被 jps 检测到？以及我们的生产策略</title><link>https://neatguycoding.com/zh-cn/posts/graalvm-jvm/</link><pubDate>Fri, 19 Apr 2024 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/graalvm-jvm/</guid><description>了解 GraalVM Native Image 进程何时会在 jps 中显示，并学习我们在生产环境中在 GraalVM Native Image 和 JVM 之间选择的经过实战验证的方法。我们详细介绍了针对 Lambda 风格任务与长期运行的微服务的策略。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/graalvm-jvm/featured.jpg"/></item><item><title>最大化第三方 API 请求吞吐量：实用测试方法</title><link>https://neatguycoding.com/zh-cn/posts/http-client/</link><pubDate>Thu, 18 Apr 2024 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/http-client/</guid><description>学习如何使用 WebClient、TestContainers 和 toxicproxy 开发和测试高性能 API 客户端。本综合指南涵盖异步请求处理、隔离测试环境和真实故障模拟，用于构建健壮的微服务。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/http-client/featured.jpg"/></item><item><title>解决神秘的 JVM Safepoint 问题：从问题到解决方案的探索之旅</title><link>https://neatguycoding.com/zh-cn/posts/log-copy-issue/</link><pubDate>Sun, 19 Jun 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/log-copy-issue/</guid><description>深入探讨诊断和解决生产 JVM 问题，其中应用在每小时日志同步任务期间会冻结。我们探索 safepoint 分析、JVM 日志输出阻塞、异步日志实现和 WebFlux 优化以实现完整解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/log-copy-issue/featured.jpg"/></item><item><title>解决 JVM Safepoint 延迟：从 EFS 集成到异步日志的探索之旅</title><link>https://neatguycoding.com/zh-cn/posts/async-log-issue/</link><pubDate>Thu, 16 Jun 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/async-log-issue/</guid><description>深入调查升级到 Java 17 并实施 AWS EFS 集中式日志收集后出现的神秘 JVM safepoint 延迟问题。我们发现日志输出期间的文件 I/O 阻塞如何冻结整个 JVM 进程，并通过异步日志和正确的 WebFlux 实现解决了这个问题。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/async-log-issue/featured.jpg"/></item><item><title>解决分片 MySQL 表的性能下降：理解根本原因和解决方案</title><link>https://neatguycoding.com/zh-cn/posts/recreate_table/</link><pubDate>Fri, 27 May 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/recreate_table/</guid><description>全面指南，了解为什么 MySQL 查询在分片环境中随时间变慢，探讨存储碎片和 MVCC 相关问题的根本原因，并提供使用 OPTIMIZE TABLE 表重建技术维护最佳数据库性能的实用解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/recreate_table/featured.jpg"/></item><item><title>隐藏的性能杀手：为什么日志中的代码位置会摧毁你的微服务性能</title><link>https://neatguycoding.com/zh-cn/posts/log-with-position/</link><pubDate>Wed, 02 Mar 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/log-with-position/</guid><description>了解在日志中启用代码位置如何导致微服务中的严重 CPU 性能问题，特别是响应式应用。这个深入分析揭示了 Log4j2 中堆栈遍历的隐藏成本，并为高吞吐量系统提供了可行的解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/log-with-position/featured.jpg"/></item><item><title>MySQL 优化器统计：为什么你的查询选择了错误的索引</title><link>https://neatguycoding.com/zh-cn/posts/sql-index/</link><pubDate>Thu, 24 Feb 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/sql-index/</guid><description>深入探讨 MySQL 的 InnoDB 优化器统计以及采样不准确如何导致索引选择不当，造成相似查询之间的显著性能差异。学习防止由优化器误判导致的慢 SQL 查询的实用解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/sql-index/featured.jpg"/></item><item><title>配置 Spring Data Redis 与 Lettuce 以实现有效的 Pipeline 操作</title><link>https://neatguycoding.com/zh-cn/posts/spring-data-redis-pipeline/</link><pubDate>Wed, 05 Jan 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/spring-data-redis-pipeline/</guid><description>关于如何正确配置 Spring Data Redis 与 Lettuce 以启用 pipeline 功能的综合指南。了解连接共享、AutoFlushCommands 和 PipeliningFlushPolicy 配置，以优化你的 Redis 批量操作并减少网络往返时间。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/spring-data-redis-pipeline/featured.jpg"/></item><item><title>Spring Data Redis 连接泄漏之谜：当你的微服务失控时</title><link>https://neatguycoding.com/zh-cn/posts/spring-data-redis-connection-leak/</link><pubDate>Thu, 14 Oct 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/spring-data-redis-connection-leak/</guid><description>生产事件调查，揭示 Spring Data Redis + Lettuce 在混合使用 SessionCallback 和 executeWithStickyConnection 操作时如何泄漏连接。深入探讨连接管理机制、JFR 分析技术和实用解决方案，防止你的 Redis 连接池成为黑洞。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/spring-data-redis-connection-leak/featured.jpg"/></item><item><title>网关雪崩危机：同步 Redis 调用如何几乎摧毁我们的系统</title><link>https://neatguycoding.com/zh-cn/posts/spring-cloud-gateway-avalanche/</link><pubDate>Wed, 01 Sep 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/spring-cloud-gateway-avalanche/</guid><description>深入探讨生产事件，其中我们的 Spring Cloud Gateway 由于阻塞的 Redis 操作而经历了级联故障。了解响应式环境中的同步 API 调用如何导致线程饥饿，导致健康检查失败和系统范围的雪崩，以及使用异步模式的完整解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/spring-cloud-gateway-avalanche/featured.jpg"/></item><item><title>通过 SQL 优化发现的隐藏生产问题</title><link>https://neatguycoding.com/zh-cn/posts/big-table-index-invalid/</link><pubDate>Sat, 07 Aug 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/big-table-index-invalid/</guid><description>当我们的运维团队带来一个执行时间极长的复杂 SQL 查询时，我们以为这只是一个性能问题。我们不知道，这次调查会发现一个深深隐藏的字符编码不匹配问题，它一直在我们的生产数据库中默默地导致全表扫描。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/big-table-index-invalid/featured.jpg"/></item><item><title>使用 JFR 排查 SSL 性能瓶颈</title><link>https://neatguycoding.com/zh-cn/posts/jfr-ssl/</link><pubDate>Sat, 27 Mar 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/jfr-ssl/</guid><description>深入分析微服务性能问题，包括 CPU 峰值和数据库连接异常。通过 JFR 分析，我们发现根本原因是 Java SecureRandom 在 /dev/random 上阻塞，并提供使用 /dev/urandom 的解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/jfr-ssl/featured.jpg"/></item><item><title>全网最硬核 JDK 分析 - 1. TLAB 全面解析</title><link>https://neatguycoding.com/zh-cn/posts/tough-jdk-1-tlab/</link><pubDate>Wed, 03 Feb 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/tough-jdk-1-tlab/</guid><description>深入探讨 JVM 的线程本地分配缓冲区（TLAB）机制，涵盖设计原理、实现细节、性能优化和源代码分析。了解 TLAB 如何提高多线程环境中的内存分配效率，并掌握 TLAB 调优技术。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/tough-jdk-1-tlab/featured.jpg"/></item><item><title>OpenJDK 11 JVM 日志：新统一配置完整指南</title><link>https://neatguycoding.com/zh-cn/posts/jvm-log/</link><pubDate>Thu, 06 Feb 2020 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/jvm-log/</guid><description>了解 OpenJDK 11 如何通过其统一配置系统彻底改变 JVM 日志记录。学习用于 GC 分析、类加载和运行时编译的基本日志标签，以及使用 jcmd 进行实时性能调优的动态日志配置。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/jvm-log/featured.jpg"/></item></channel></rss>