文档文档

排查写入数据的问题

了解如何避免意外结果以及从写入 InfluxDB 3 Core 的错误中恢复。

处理写入响应

当您发送写入请求时,InfluxDB 3 Core 会执行以下操作:

  1. 验证请求。

  2. 如果成功,则尝试从请求正文中摄取数据;否则,会响应一个错误状态

  3. 摄取或拒绝批次中的数据,并返回以下 HTTP 状态码之一:

    • 204 No Content:批次中的所有数据都已摄取。
    • 400 Bad Request:部分或全部数据已被拒绝。未被拒绝的数据已被摄取并且可查询。

响应正文包含有关被拒绝的点的错误详情,最多包含 100 个点。

写入是同步的——响应状态指示写入的最终状态,所有摄取的数据均可查询。

为确保 InfluxDB 按您请求的顺序处理写入,请在发送下一个请求之前等待响应。

查看 HTTP 状态码

InfluxDB 3 Core 使用常规的 HTTP 状态码来指示请求的成功或失败。响应正文的 message 属性可能包含有关错误的额外详细信息。写入请求返回以下状态码:

HTTP 响应码消息描述
204 "Success"如果 InfluxDB 摄取了数据
400 "Bad request"关于被拒绝的点的错误详情,最多 100 个点:line 包含第一个被拒绝的行,message 描述被拒绝的原因如果部分或全部请求数据不被允许(例如,格式错误或超出存储桶的保留期),响应正文会指示是否发生了部分写入或所有数据都被拒绝。
401 "Unauthorized"如果 Authorization 标头缺失或格式错误,或者 token 没有写入数据库的权限。请参阅使用凭据的写入 API 示例
404 "Not found"请求的资源类型(例如,“organization”或“database”)和资源名称如果未找到请求的资源(例如,组织或数据库)
500 "Internal server error"错误的默认状态
503 “Service unavailable”如果服务器暂时无法接受写入。Retry-After 标头描述了何时可以再次尝试写入。

如果您的数据未写入数据库,请参阅如何排查被拒绝的点

故障排除

如果您注意到数据库中缺少数据,请执行以下操作:

  • 检查响应正文中的 message 属性以获取错误详情。
  • 如果 message 描述了字段错误,请排查被拒绝的点
  • 验证所有行是否包含有效的语法(行协议)。
  • 验证数据中的时间戳是否与请求中的精度参数匹配。
  • 通过优化写入来减小有效负载大小和网络错误。

排查被拒绝的点

InfluxDB 会拒绝与现有数据模式不匹配的点。

检查被拒绝数据点与同一数据库中的点之间的字段数据类型差异——例如,是否尝试将 string 数据写入 int 字段?

排查写入性能问题

如果您在大量数据摄取期间遇到缓慢的写入性能或超时,请考虑以下几点:

内存配置

InfluxDB 3 Core 使用内存进行查询处理和内部数据操作,包括在持久化过程中将数据转换为 Parquet 格式。对于写入量大的工作负载,内存分配不足可能导致性能问题。

与内存相关的写入问题的症状

  • 数据持久化期间写入性能缓慢(通常每 10 分钟一次)
  • 大量数据摄取期间响应时间增加
  • 服务器日志中与内存相关的错误

解决方案

  • 增加 exec-mem-pool-bytes 配置以分配更多内存用于数据操作。对于写入量大的工作负载,请考虑将其设置为可用内存的 30-40%。
  • 在写入高峰期监控内存使用情况,以识别瓶颈。
  • 调整 gen1-duration 以控制数据持久化为 Parquet 格式的频率。

针对写入量大工作负载的示例配置

influxdb3 serve \
  --exec-mem-pool-bytes 
PERCENTAGE
\
--gen1-duration 15m \ # ... other options

PERCENTAGE 替换为您要分配的可用内存百分比(例如,对于写入量大的工作负载为 35%)。


此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2