Pyroscope 内存开销
Pyroscope 的内存开销非常低,通常每个 Pod 不超过 50 MB。
剖析器的工作原理
栈追踪以固定间隔(约 100Hz)捕获。内存分配和锁竞争事件会被采样。
这些栈追踪和内存分配事件会暂时存储在内存中。
存储的剖析数据会定期(默认每 15 秒)发送到服务器。
内存开销包括
- 内存中临时存储剖析数据是内存开销的主要来源。
- 内存使用通常与 CPU 数量呈亚线性增长。
如果 Pyroscope 后端宕机怎么办?
Pyroscope 客户端的指导原则是绝不导致用户应用程序崩溃。
剖析数据使用多个线程上传。默认值为 5
,可以通过 Threads
变量进行调整。
如果后端宕机或速度缓慢,剖析器会丢弃新的剖析数据,以防止内存耗尽。
实际案例
具体的开销因应用程序而异,因此建议直接进行测试。
在 Grafana Labs,我们持续剖析所有的工作负载。启用所有剖析类型(CPU、alloc、goroutine、mutex、block)后,观察到每个 Pod 的内存开销通常小于 50 MB。
开销通常非常小,很难准确测量。