菜单
开源

配置磁盘存储

Grafana Pyroscope 中的摄取器 (ingester) 组件处理接收到的性能剖析数据。首先,它将数据组织在内存中,即所谓的“头部块”。一旦头部块的大小超过阈值或头部块的创建时间超过 -pyroscopedb.max-block-duration(默认为 1 小时),摄取器会将该块写入本地持久化磁盘。有关块布局的更多详细信息,请参阅块格式

每个块都由一个 ULID 标识,并存储在 Pyroscope 的数据路径 -pyroscopedb.data-path=(默认为 ./data)中。此目录按以下结构组织:

  • ./<tenant-id>: 每个租户都有自己的子目录,包含以下子目录:
    • head/<block-id>: 包含当前仍在写入的数据。
    • local/<block-id>: 包含已完成的块,这些块保留在本地。

对象存储

配置了对象存储时,已完成的块会上传到对象存储桶。

磁盘利用率过高

为了避免丢失最新数据,当 Pyroscope 检测到数据路径所在的卷即将耗尽磁盘空间时,会删除最旧的块。高磁盘利用率检查每隔 -pyroscopedb.retention-policy-enforcement-interval 运行一次,条件是:

  • 卷总大小中可用空间小于 -pyroscopedb.retention-policy-min-disk-available-percentage=0.05,并且
  • 可用磁盘空间小于 -pyroscopedb.retention-policy-min-free-disk-gb=10

删除操作会记录如下日志:

level=warn caller=pyroscopedb.go:231 ts=2022-10-05T13:19:09.770693308Z msg="disk utilization is high, deleted oldest block" path=data/anonymous/local/01GDZYHKKKY2ANY6PCJJZGT1N8