我对这个pprof
工具有点陌生,我想知道在生产中继续运行它是否可以。从我看过的文章来看,它似乎还可以且标准,但是我对这如何不影响性能感到困惑,因为它N
每秒进行一次采样,为什么这不会导致性能下降。
生产中的剖析
pprof 在生产中使用是安全的。
我们的目标是为 CPU 和堆分配分析额外增加 5% 的开销。从单个实例每分钟收集 10 秒。如果您有 Kubernetes pod 的多个副本,我们会确保进行摊销收集。
例如,如果您有 10 个 Pod 副本,则开销将为 0.5%。这使用户可以始终保持分析。我们目前支持 Go 程序的 CPU、堆、互斥锁和线程配置文件。
为什么?
在解释如何在生产中使用分析器之前,解释一下为什么要在生产中进行分析会很有帮助。一些非常常见的情况是:
- 调试仅在生产中可见的性能问题。
- 了解 CPU 使用率以减少计费。
- 了解争用在哪里累积和优化。
- 了解新版本的影响,例如查看 Canary 和生产之间的差异。
- 通过将它们与分析样本相关联来丰富您的分布式跟踪,以了解延迟的根本原因。
因此,如果您pprof
出于正确的原因使用,是的,您可以将其保留在生产中。
但是对于基本监控,正如评论的那样,该系统就足够了。
正如Vladimir Varankin在“ Continuous Profiling and Go ”中所指出的
根据公司基础设施的状态,应用程序进程中的“意外”HTTP 服务器可能会引起您的系统运营部门的问题;)
同时,根据公司的特殊性质,访问生产应用程序内部与应用程序的业务逻辑没有直接关系的某些内容的能力可能会引起安全部门的问题;)) 我
因此,在启用此类功能时,开销并不是要考虑的唯一标准。