性能排查
已收录文章:47篇
-
从一个不存在的商品 ID 被反复查询的场景出发,演示 Redis 空值保护的最小实现,说明 TTL、并发回源、数据新建和主动失效之间如何配合。333 收藏
-
Chrome DevTools 的 Network 面板可以模拟 Fast 3G、Slow 3G 和 Offline,还能配合 Disable cache 复现加载慢、资源失败和离线兜底问题。本文按真实界面路径说明设置、刷新、观察警告图标与恢复网络的核对方法。330 收藏
-
数据库 · MySQL | 1个月前 | MySQL · DDL · 性能排查 · MySQL 元数据锁 metadata_locks performance_schema DDL阻塞 Waiting for table metadata lockMySQL 的 ALTER TABLE 卡住时,不要只盯着 Waiting for table metadata lock。本文用 performance_schema.metadata_locks 和 threads 关联锁对象、等待会话与持有会话,并给出安全终止和发布前检查方法。297 收藏
-
Linux 的 load average 不只统计正在抢 CPU 的任务,也会计入等待 I/O 的不可中断任务。遇到负载高而 CPU 看似空闲时,先对齐 uptime、/proc/loadavg、vmstat 和进程状态,再确认具体等待点与磁盘或网络存储的时间关系,避免一上来扩容或杀进程。292 收藏
-
数据库 · MySQL | 1个月前 | MySQL · 索引 · 执行计划 · sql优化 · 性能排查 · 执行计划 MySQL 8.4 EXPLAIN FORMAT=JSON cost_info query_costMySQL 查询慢时,EXPLAIN 的 rows 只是行数估算,真正影响优化器取舍的还包括 cost_info。本文用订单列表场景拆解 query_cost、read_cost、条件评估成本、prefix_cost 的关系,再用 EXPLAIN ANALYZE 复核估算偏差,避免把 cost 数字直接当成毫秒。284 收藏
-
Java 线程池出现任务堆积时,不要只盯着活动线程数。本文用队列长度、完成任务数和拒绝策略还原排查路径,并给出可复现的状态采样代码。284 收藏
-
按月增长的订单或日志表,不必每次归档都全表搬运。本文用 MySQL 8.4 RANGE 分区示例,说明分区键设计、分区裁剪检查、按月新增与删除边界,以及上线前的回滚和验收方法。273 收藏
-
本文从 Linux 接口变慢和磁盘 IO 飙高的现场开始,使用 iostat 判断磁盘压力,再用 pidstat 定位写入进程,最后通过限速清理、迁移写入和复查指标恢复稳定。260 收藏
-
Go 1.26 为 runtime/pprof 增加了实验性的 goroutineleak profile,可以帮助发现因 channel、锁等并发原语永久阻塞的协程。本文用一个提前返回的收集器复现泄漏,说明启用开关、采样方式、误判边界和回滚检查。257 收藏
-
MySQL 8.4 的 CTE 不一定会生成临时结果集。本文用 EXPLAIN 和 optimizer_switch 判断 CTE 是被合并还是物化,并说明 derived_merge、NO_MERGE 与多次引用的边界。253 收藏
-
Redis Cluster 中,多键操作需要落在同一 slot,而把所有订单都塞进一个哈希标签又可能制造热点。本文用订单明细与库存扣减场景说明如何拆分 Key、验证 slot 分布,并在多键事务与分片均衡之间做取舍。249 收藏
-
复盘一次 MySQL 写入延迟突然升高的问题:从影响面和时间线入手,通过 innodb_trx、history list length 和 purge 状态定位长事务拖住 undo 清理,并给出修复和防复发清单。242 收藏