6

我对这个pprof工具有点陌生,我想知道在生产中继续运行它是否可以。从我看到的文章来看,这似乎是好的和标准的,但是我很困惑这不会影响性能,因为它N每秒都会进行一次采样,以及为什么这不会导致性能下降。

4

1 回答 1

8

Jaana Dogan在她的文章“ Go 程序的持续分析”中确实说过

生产中的分析

pprof 在生产中使用是安全的
我们的目标是为 CPU 和堆分配分析额外增加 5% 的开销

收集从单个实例每分钟发生 10 秒。如果您有一个 Kubernetes pod 的多个副本,我们会确保进行摊销收集。
例如,如果您有 10 个 pod 副本,则开销将为 0.5%。这使用户可以始终保持分析。

我们目前支持 Go 程序的 CPU、堆、互斥锁和线程配置文件。

为什么?

在解释如何在生产中使用分析器之前,解释一下为什么要在生产中进行分析会很有帮助。一些非常常见的情况是:

  • 调试性能问题仅在生产中可见。
  • 了解 CPU 使用率以减少计费。
  • 了解争用在何处累积和优化。
  • 了解新版本的影响,例如看到金丝雀和生产之间的区别。
  • 通过将它们与分析样本相关联来丰富您的分布式跟踪,以了解延迟的根本原因。

因此,如果您pprof出于正确的原因使用它,是的,您可以将其留在生产中。
但是对于基本监控,正如评论的那样,该系统就足够了。

正如Vladimir Varankin在“ Continuous Profiling and Go ”中所指出的那样

根据公司基础设施的状态,应用程序进程中的“意外”HTTP 服务器可能会向您的系统运营部门提出问题;)

同时,根据公司的特殊性质,访问生产应用程序中的某些内容(与应用程序的业务逻辑没有直接关系)的能力可能会引起安全部门的质疑;))我

因此,在启用此类功能时,开销并不是唯一要考虑的标准。

于 2020-09-25T04:33:44.377 回答