database Roadmap

数据库 / 缓存专题

数据库 / 缓存排障专题:聚合 MySQL Too many connections、lock wait timeout、慢查询、Redis OOM 与 big key、连接池打满和缓存穿透击穿等常见问题的完整排障路径与命令模板。

数据库问题先查连接数、慢查询、锁、内存和上游应用连接池配置,很多"数据库慢"其实是应用侧未释放连接或慢请求堆积,不要只调大 max_connections 或 maxmemory 参数掩盖根因。

databasemysqlredisconnectionsmemorycache
排障 / 命令11
精选入口4
工具 / 速查3
最近更新2026-07-01

Troubleshooting Path

推荐排障路线图

提交问题 →
  1. 01

    先看连接和资源指标

    确认连接数、CPU、内存、磁盘和网络是否达到瓶颈。

  2. 02

    再定位慢查询、锁和大 key

    MySQL 看 processlist/innodb status,Redis 看 memory/bigkeys/TTL。

  3. 03

    继续检查应用连接池

    很多连接堆积来自应用池配置、慢请求和未释放连接,而不是数据库参数太小。

  4. 04

    最后做参数调整和容量规划

    调整 max_connections、maxmemory 或淘汰策略前,先确认业务影响和回滚方式。

Before You Change

执行前检查

  • 不要只调大连接数掩盖慢查询
  • 修改数据库参数前记录原值
  • Redis 清理 key 前确认业务归属
  • 生产库执行 kill query 前确认影响范围

Start Here

优先阅读

Latest Updates

最近更新

All Runbooks

全部相关内容

排障

CI 构建内存不足与进程被杀排查

CI 构建时出现 JavaScript heap out of memory、Killed 或 exit code 137,先区分 Node 堆内存不足与系统 OOM,再调整 NODE_OPTIONS=--max-old-space-size、Runner 内存和并发 job,覆盖 GitHub Actions、GitLab CI 和自建 Runner 场景。

cibuildmemory
排障

CI 缓存失效排查方法

CI 缓存不命中、每次构建都从零安装依赖时,先对比 restore/save 步骤打印的 cache key 是否变化,再检查缓存路径配置、runner OS 前缀和 gh cache list 中的实际条目,常见根因是 key 把易变内容算入或 restore-keys 顺序不对。

ci缓存cache
排障

Linux OOM Killer 与内存不足排查

Linux 进程被 OOM Killer 杀、容器状态 OOMKilled 或 dmesg 出现 Out of memory: Killed process 时,用 dmesg -T 与 journalctl -k 查历史内核日志确认时间和被杀进程,区分宿主机 OOM 与容器 cgroup 限制,再看进程 RSS 增长趋势排查泄漏。

linuxmemoryoom
排障

MySQL Lock wait timeout exceeded 排查

MySQL 报 Lock wait timeout exceeded; try restarting transaction 时,用 SHOW ENGINE INNODB STATUS 看 LATEST DETECTED DEADLOCK,通过 information_schema.innodb_trx 与 data_lock_waits 找 blocking 事务,短期 kill 会话,长期缩短事务并补索引避免大范围锁。

mysqllocktransaction
排障

MySQL Too many connections 排查与缓解

MySQL 报 Too many connections、连接数达到 max_connections 时,SHOW PROCESSLIST 按用户/IP/数据库/状态聚合连接,识别大量 Sleep 或长时间 Sending data 的会话,检查应用连接池 max pool size 是否超过数据库承载,而不是盲目调大 max_connections。

mysqldatabaseconnections
排障

PostgreSQL connection refused 排查方法

psql 连接 PostgreSQL 报 could not connect to server: Connection refused 时,先确认服务是否 running、5432 是否监听、postgresql.conf 的 listen_addresses 是否绑定到目标 IP,再逐层排查防火墙、安全组和 Docker 端口映射,pg_hba.conf 只影响后续认证。

postgresqldatabaseconnection
排障

Redis 连接不上怎么排查

Redis 客户端报 Could not connect: Connection refused 或 NOAUTH Authentication required 时,先确认 6379 端口是否监听、redis.conf 的 bind 是否限制为 127.0.0.1、protected-mode 是否阻止远程访问,再核对 requirepass 密码和 Docker 端口映射与容器网络。

redisconnectionbind
排障

Redis 内存占用过高与淘汰策略排查

Redis 内存持续上涨、报 OOM command not allowed when used memory > 'maxmemory' 或 evicted_keys 飙升时,先用 INFO memory 看 used_memory/maxmemory,CONFIG GET maxmemory-policy 确认策略是否 noeviction,再用 --bigkeys 找大 key 并检查 TTL 是否缺失。

redismemorybigkeys
命令

MySQL 查看锁等待和事务命令

MySQL 排查锁等待和事务阻塞的常用命令,SHOW FULL PROCESSLIST 看当前活跃会话与状态,SHOW ENGINE INNODB STATUS 读 LATEST DETECTED DEADLOCK,information_schema.innodb_trx 和 performance_schema.data_lock_waits 找 blocking 事务,必要时 KILL <thread_id>。

mysqllockinnodb
命令

Node/Nuxt 构建内存排查命令

Node/Nuxt/Next 构建报 JavaScript heap out of memory 或 exit code 137 时排查内存的常用命令,用 NODE_OPTIONS=--max-old-space-size=4096 扩大 V8 堆,du 查看 .nuxt/.output/.next 构建产物体积,free -h 与 dmesg 判断系统 OOM。

nodenuxtbuild
命令

ps 查看进程和资源占用命令

Linux ps 查看进程静态快照的常用命令,ps aux --sort=-%cpu/-%mem 按 CPU 或内存排序找可疑进程,ps -ef | grep 按名称过滤,ps -o pid,ppid,stat,etime,cmd 查父子进程和状态,pstree -ap 展示进程树,动态观测配合 top/pidstat。

psprocesslinux