菜单
开源

Pyroscope 内存开销

Pyroscope 的内存开销非常低,通常每个 Pod 不超过 50 MB。

剖析器的工作原理

栈追踪以固定间隔(约 100Hz)捕获。内存分配和锁竞争事件会被采样。

这些栈追踪和内存分配事件会暂时存储在内存中。

存储的剖析数据会定期(默认每 15 秒)发送到服务器。

内存开销包括

  • 内存中临时存储剖析数据是内存开销的主要来源。
  • 内存使用通常与 CPU 数量呈亚线性增长。

如果 Pyroscope 后端宕机怎么办?

Pyroscope 客户端的指导原则是绝不导致用户应用程序崩溃。

剖析数据使用多个线程上传。默认值为 5,可以通过 Threads 变量进行调整。

如果后端宕机或速度缓慢,剖析器会丢弃新的剖析数据,以防止内存耗尽。

实际案例

具体的开销因应用程序而异,因此建议直接进行测试。

在 Grafana Labs,我们持续剖析所有的工作负载。启用所有剖析类型(CPU、alloc、goroutine、mutex、block)后,观察到每个 Pod 的内存开销通常小于 50 MB。

开销通常非常小,很难准确测量。