菜单
开源

Node.js

使用我们的 Node.js 配置文件分析器增强您的 Node.js 应用程序性能。与 Pyroscope 无缝集成,它提供对应用程序操作的实时洞察,帮助您识别和解决性能瓶颈。这种集成对于希望提高效率、减少延迟并保持最佳应用程序性能的 Node.js 开发人员至关重要。

注意

有关支持每种语言的配置文件类型列表,请参阅 支持的配置文件类型

开始之前

要捕获和分析配置文件数据,您需要托管 Pyroscope OSS 服务器或托管 具有 Grafana Cloud 配置文件的 Pyroscope 实例(需要免费 Grafana Cloud 帐户)。

Pyroscope服务器可以是用于开发的本地服务器或用于生产的远程服务器。

将Node.js性能分析添加到您的应用程序

要开始分析Node.js应用程序,您需要在您的应用程序中包含npm模块

npm install @pyroscope/nodejs

# or
yarn add @pyroscope/nodejs

配置Node.js客户端

将以下代码添加到您的应用程序

JavaScript
const Pyroscope = require('@pyroscope/nodejs');

Pyroscope.init({
  serverAddress: 'http://pyroscope:4040',
  appName: 'myNodeService'
});

Pyroscope.start()

注意

如果您愿意,可以使用Grafana Alloy使用拉模式

配置选项

初始化参数环境变量类型描述
`appName`PYROSCOPE_APPLICATION_NAME字符串设置service_name标签
serverAddressPYROSCOPE_SERVER_ADDRESS字符串Pyroscope服务器URL
basicAuthUsern/a字符串基本认证的用户名/ Grafana Cloud堆栈用户ID(默认""
basicAuthPasswordn/a字符串基本认证的密码/ Grafana Cloud API密钥(默认""
flushIntervalMsPYROSCOPE_FLUSH_INTERVAL_MS数字将配置文件发送到服务器的间隔(默认60000
heapSamplingIntervalBytesPYROSCOPE_HEAP_SAMPLING_INTERVAL_BYTES数字样本之间的平均字节数(默认524288
heapStackDepthPYROSCOPE_HEAP_STACK_DEPTH数字堆样本的最大堆栈深度(默认64
wallSamplingDurationMsPYROSCOPE_WALL_SAMPLING_DURATION_MS数字单个墙配置文件的持续时间(默认60000
wallSamplingIntervalMicrosPYROSCOPE_WALL_SAMPLING_INTERVAL_MICROS数字收集墙样本的间隔(默认10000
wallCollectCpuTimePYROSCOPE_WALL_COLLECT_CPU_TIME布尔值启用墙配置文件的CPU时间收集(默认false
tagsn/aLabelSet应用于收集的所有配置文件的静态标签(默认{}
sourceMappern/aSourceMapper提供源文件映射信息(默认undefined

将性能分析标签添加到Node.js应用程序

静态标签

您可以将静态标签添加到性能分析数据中。这些标签可以用于在UI中筛选数据并应用于收集的所有配置文件。常见的静态标签包括

  • hostname
  • region
  • team
JavaScript
Pyroscope.init({
  serverAddress: 'http://pyroscope:4040',
  appName: 'myNodeService',
  tags: {
    region: ENV['region']
  },
});

Pyroscope.start()

动态标签用于墙/ CPU配置文件

在墙和CPU配置文件中,标签也可以动态附加,有助于区分不同的代码路径

JavaScript
Pyroscope.wrapWithLabels({ vehicle: 'bike' }, () =>
  slowCode()
);

将数据发送到Pyroscope OSS或Grafana Cloud

JavaScript
Pyroscope.init({
  serverAddress: 'http://pyroscope:4040',
  appName: 'myNodeService',
  tags: {
    region: ENV['region']
  },
  basicAuthUser: ENV['PYROSCOPE_BASIC_AUTH_USER'],
  basicAuthPassword: ENV['PYROSCOPE_BASIC_AUTH_PASSWORD'],
  // Optional Pyroscope tenant ID (only needed if using multi-tenancy). Not needed for Grafana Cloud.
  // tenantID: ENV['PYROSCOPE_TENANT_ID'],
});

Pyroscope.start()

要将数据发送到Pyroscope,请将serverAddress占位符替换为适当的服务器URL。这可能可以是Grafana Cloud Pyroscope URL或您自己的自定义Pyroscope服务器URL。

如果您需要将数据发送到Grafana Cloud,您将需要配置HTTP基本身份验证。将basicAuthUser替换为您的Grafana Cloud堆栈用户ID,将basicAuthPassword替换为您的Grafana Cloud API密钥。

如果您的Pyroscope服务器启用了多租户,您将需要配置租户ID。将tenantID替换为您的Pyroscope租户ID。

故障排除

DEBUG环境变量设置为pyroscope提供额外的调试信息。

bash
DEBUG=pyroscope node index.js