【TiDB 使用环生产环境
【TiDB 版本】v8.5.4
从库的监控相关服务器 8c 16g,CPU和内存使用率,间隔一个小时左右就有一个高峰值。有段时间持续打满。重启后短时间内好些,过段时间又出现了。看了进程监控主要是ng-monitoring-server 和 prometheus占用的。有处理方案吗?
找到了这两个同类型帖子,都是早期版本了。现版本V8.5.4,还没解决吗?
缩短数据保留时长:默认一般 15d→改成 3~7d,减少落盘压缩量
检查Prometheus 的配置文件是否包括了过多的数据采集目标,或者数据保留策略设置不当,导致数据量过大。
如果问题与 Prometheus 相关,考虑优化你的查询和采集策略
拆分 Prometheus 与 ng-monitoring 到两台机器或升级硬件配置。
先明确原因
8C16G 机器资源偏小,TiDB 集群节点多、指标基数大,整点批量压缩 + 清理瞬间打爆 CPU / 内存,重启清空内存临时缓解,随数据持续写入再次堆积冲高。两个进程分工:
- ng-monitoring-server:对接 PD 拉取集群实时指标、本地时序存储、数据过期清理,整点清理旧数据 CPU 突涨;
- Prometheus:定时抓取所有 exporter 指标、每 2h/1h 生成 TSDB block + 压缩,压缩阶段 CPU / 内存暴涨。
找到问题原因没有?
检查 prometheus.yml 文件中的 scrape_configs 部分,确保采集的数据点数量和频率是合理的。
从 MySQL 迁到 TiDB,如果原来用了自增主键,高并发下会产生写入热点,因为所有写操作都集中在同一个 Region。建议评估下改成 AUTO_RANDOM 或者业务自己生成分布式ID,利用 TiDB 的 Region 自动拆分机制提高写入吞吐。