标签: 数据库调优 - 文章列表
共 1 页 · 清除标签筛选
-
Java报错Connection is not available, request timed out after 30000ms的排查方法(HikariCP连接池耗尽、连接泄漏定位与maximumPoolSize调整)
HikariCP报Connection is not available, request timed out after 30000ms,多数是连接池被打满。本篇讲清报错括号里total、active、idle、waiting四个数字的读法,用leakDetectionThreshold抓出泄漏堆栈,梳理queryForStream、事务里调外部接口等四种不还连接的写法,以及maximumPoolSize、maxLifetime、keepaliveTime的取值牵制。
-
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查当前等待关系,以及加锁顺序、间隙锁、锁升级三类成因的改法。
-
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配合,以及清理堆积连接的方法。