七、问题排查与故障诊断
当 InfluxDB 出现性能问题或故障时,需要一套系统性的排查方法。
7.1 常见问题与诊断
写入吞吐量下降:
检查磁盘 I/O:iostat -x 1 查看磁盘使用率、平均队列长度。如果 %util 接近 100% 且 await 很高,说明磁盘是瓶颈。
检查 CPU 利用率:top 或 htop 查看 influxd 进程的 CPU 占用。高 CPU 可能是压缩、查询或高基数写入导致。
检查内存使用:free -h 查看内存使用。如果内存不足导致频繁交换(swap),会严重影响性能。
查看 InfluxDB 日志:搜索 write 相关的错误或警告信息。
高基数写入:检查是否引入了新的高基数标签。
查询响应慢:
检查时间范围:确保查询指定了合理的 多米尼加共和国电话号码库 时间范围,避免全表扫描。
检查标签过滤:确认是否有效利用了标签进行过滤。
检查 GROUP BY 维度:过多的 GROUP BY 维度或高基数分组会导致内存压力和性能下降。
分析查询计划:使用 EXPLAIN ANALYZE 诊断查询瓶颈。
系统资源:同写入吞吐量下降,检查 CPU、内存、磁盘 I/O。
磁盘空间快速耗尽:
未设置保留策略:检查数据库是否设置了 Retention Policies,如果没有,数据将永不删除。
压缩缓慢:检查 InfluxDB 的压缩进程是否正常工作。
大量数据删除后未清理:磁盘空间可能未释放。
高基数标签:高基数标签会生成大量的索引数据,占用额外空间。
InfluxDB 服务崩溃:
查看服务日志:journalctl -u influxdb.service 或查看 InfluxDB 数据目录下的日志文件,寻找 panic、fatal error 等关键字。
内存溢出:通常是内存不足导致的崩溃,特别是查询或写入了过大的数据集。
文件句柄不足:Linux 系统文件句柄限制(ulimit -n)过低可能导致问题。
硬件故障:磁盘损坏、内存错误等。