数据库 - 文章列表
共 11 页
-
PostgreSQL报错FATAL: sorry, too many clients already与锁等待的排查方法(pg_stat_activity查连接来源、pg_blocking_pids定位阻塞链与PgBouncer连接池)
应用日志跳出FATAL: sorry, too many clients already时psql往往也连不进去。文章讲怎么用superuser_reserved_connections预留槽钻进去,用pg_stat_activity按state、usename查连接来源,区分idle in transaction这类占槽又挡VACUUM的会话;再给出pg_locks与pg_blocking_pids两条查阻塞链的SQL,以及三个超时参数怎么按角色下发;最后是PgBouncer三种池模式的取舍。
-
Kafka消费堆积Consumer Lag的排查方法(kafka-consumer-groups查看LAG、分区数与消费者数不匹配与max.poll.interval.ms超时定位)
Kafka消费堆积时先看每个分区的LAG:用kafka-consumer-groups.sh --describe定位堆积分区,再依次排查分区数少于消费者实例、max.poll.interval.ms超时触发rebalance、offsets.retention.minutes过期导致位移重置、消费逻辑本身慢这几类成因,并给出--reset-offsets止损与Burrow监控做法。
-
Redis大key与热key的排查与解决方法(redis-cli --bigkeys、--memkeys与--hotkeys定位、UNLINK删除与拆分打散)
Redis内存莫名上涨、接口延迟抖动、主从同步变慢,多半是大key或热key在作怪。记录redis-cli --bigkeys、--memkeys、--hotkeys三个扫描器的用法与版本要求,MEMORY USAGE与OBJECT ENCODING确认单个key体量,SLOWLOG与LATENCY DOCTOR佐证,以及UNLINK异步删除、lazyfree配置、大key拆分与热key打散的具体做法。
-
MySQL主从复制延迟与报错1236、1062的排查与解决方法(Seconds_Behind_Master、Slave_SQL_Running为No与并行复制调整)
从库Seconds_Behind_Master持续增大、Slave_SQL_Running变成No、报错1236与1062,分别指向IO线程、SQL线程与回放性能三类原因。给出SHOW REPLICA STATUS各字段的读法、binlog保留期检查、并行复制参数调整和大事务定位的完整命令。
-
PostgreSQL慢查询定位与索引失效的排查方法(pg_stat_statements抓取、EXPLAIN ANALYZE看执行计划与索引不命中的常见写法)
接口越用越慢却查不出原因时,先把SQL抓出来再看执行计划。文章讲pg_stat_statements的安装与排序查法、log_min_duration_statement与auto_explain的配置、EXPLAIN ANALYZE的三处读法,以及函数包裹列、隐式类型转换、前导模糊、复合索引前导列缺失这些让索引失效的写法,还有random_page_cost与统计信息过期的处理。
-
Elasticsearch集群报red状态与分片UNASSIGNED的排查方法(allocation explain定位、磁盘水位线与副本数调整)
Elasticsearch集群health变red、分片显示UNASSIGNED,写入报cluster_block_exception。用_cat/shards与_cluster/allocation/explain定位到具体decider,处理磁盘水位线85%、90%、95%,副本数与节点数不匹配、max_shards_per_node上限及分配开关未恢复。
-
MySQL报错Deadlock found when trying to get lock的排查方法(SHOW ENGINE INNODB STATUS定位死锁与加锁顺序调整)
业务日志里出现ERROR 1213 Deadlock found when trying to get lock,说明InnoDB检测到循环等待并回滚了其中一个事务。本文讲如何用SHOW ENGINE INNODB STATUS读取LATEST DETECTED DEADLOCK段、用innodb_print_all_deadlocks留档、8.0的performance_schema.data_lock_waits查当前等待关系,以及加锁顺序、间隙锁、锁升级三类成因的改法。
-
Redis报错MISCONF Redis is configured to save RDB snapshots的解决方法(stop-writes-on-bgsave-error、fork失败与目录权限排查)
Redis写入报MISCONF Redis is configured to save RDB snapshots,读正常写被拒,根因是上一次bgsave失败被Redis记住。按排查顺序给出info persistence确认状态、journalctl查真实报错、目录属主与systemd ProtectSystem、vm.overcommit_memory导致fork失败、容器/data挂载与SELinux上下文处理,以及config set止血后如何固化配置。
-
MySQL报错Too many connections的排查与解决方法(max_connections与连接泄漏定位)
MySQL出现ERROR 1040 Too many connections时,先用Threads_connected与Threads_running判断是并发高还是连接没释放,再用processlist按来源IP聚合定位到具体服务。文中包含8.0.14管理端口救急、max_connections与线程级buffer的内存账、HikariCP与Druid的maxLifetime和wait_timeout配合,以及清理堆积连接的方法。
-
PostgreSQL查看表和数据大小的方法(pg_relation_size与pg_total_relation_size)
PostgreSQL里看表占了多少空间,别只信图形化工具的估算。本文讲清pg_relation_size、pg_total_relation_size、pg_indexes_size三个函数的口径差别,给出换算MB/GB和按大小排全库表的SQL,并说清toast与索引对空间统计的影响。