菜单
文档breadcrumb arrow Grafana Tempobreadcrumb arrow 故障排除breadcrumb arrow 查询breadcrumb arrow 队列中的作业太多
开源

队列中的作业太多

错误消息也可能是

  • 队列没有足够的空间容纳 100 个作业
  • 未能将作业添加到工作队列

如果 compactor 未运行且 blocklist 大小急剧膨胀,您可能会看到此错误。compactor 可能未运行的可能原因包括:

  • 权限不足。
  • 由于没有块哈希到 compactor,导致其处于空闲状态。
  • 配置设置不正确。

诊断问题

  • 检查指标 tempodb_compaction_bytes_written_total。如果此值大于零(0),则表示 compactor 正在运行并向后端写入数据。
  • 检查指标 tempodb_compaction_errors_total。如果此指标大于零(0),请检查 compactor 的日志以查找错误消息。

解决方案

  • 验证 Compactor 对存储桶对象具有 LIST、GET、PUT 和 DELETE 权限。
    • 如果缺少这些权限,请将其分配给 compactor 容器。
    • 有关详细信息,请参阅 Amazon S3 权限
  • 如果存在某个 compactor 在其他 compactor 运行时却处于空闲状态,请将端口转发到 compactor 的 http 端点。然后转到 /compactor/ring 并单击空闲 compactor 上的 Forget
  • 检查以下配置参数以确保设置正确
    • max_block_bytes 用于确定 ingester 何时切割块。根据工作负载的不同,一个好的数值范围是 100MB 到 2GB。
    • max_compaction_objects 用于确定一个压缩块中的最大对象数。此值应相对较高,通常在百万级别。
    • retention_duration 用于确定追踪应在后端保留多长时间。
  • 检查配置的 storage 部分并增加 queue_depth。请注意,更深的队列可能意味着更长的查询响应等待时间。相应地调整 max_workers,该参数配置查询后端块的并行 worker 数量。
yaml
storage:
  trace:
    pool:
      max_workers: 100   # worker pool determines the number of parallel requests to the object store backend
      queue_depth: 10000