菜单
开源

Ruby

Ruby Profiler 彻底改变了 Ruby 应用程序的性能调整。它与 Pyroscope 集成,提供实时性能数据,使开发人员能够深入了解其 Ruby 代码库。此工具对于识别性能问题、优化代码效率以及增强 Ruby 应用程序的整体速度和可靠性至关重要。

注意

请参阅 可用的性能分析类型,了解 Ruby 支持的概要文件类型的列表。

开始之前

要捕获和分析性能分析数据,您需要一个托管的 Pyroscope OSS 服务器或一个托管的 带有 Grafana Cloud Profiles 的 Pyroscope 实例(需要一个免费的 Grafana Cloud 帐户)。

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

将 Ruby 性能分析添加到您的应用程序

pyroscope gem 添加到您的 Gemfile

bash
bundle add pyroscope

配置 Ruby 客户端

将以下代码添加到您的应用程序中。如果您使用的是 Rails,请将其放入 config/initializers 目录中。此代码将初始化 Pyroscope 性能分析器并开始性能分析

ruby
require 'pyroscope'

Pyroscope.configure do |config|
  config.application_name = "my.ruby.app" # replace this with some name for your application
  config.server_address   = "http://my-pyroscope-server:4040" # replace this with the address of your Pyroscope server
end

如何在 Ruby 应用程序中添加性能分析标签

Pyroscope Ruby 集成提供了多种标记性能分析数据的方法。例如,您可以在初始化性能分析器时提供标签

ruby
require 'pyroscope'

Pyroscope.configure do |config|
  config.application_name = "my.ruby.app"
  config.server_address   = "http://my-pyroscope-server:4040"

  config.tags = {
    "hostname" => ENV["HOSTNAME"],
  }
end

或者您可以动态标记代码的某些部分

ruby
Pyroscope.tag_wrapper({ "controller": "slow_controller_i_want_to_profile" }) do
  slow_code
end

Rails 性能分析自动检测

默认情况下,如果您将 Pyroscope 添加到 Rails 应用程序中,它会自动使用 action="<controller_name>/<action_name>" 标签标记您的操作。

要禁用 Rails 自动检测,请将 autoinstrument_rails 设置为 false

ruby
Pyroscope.configure do |config|
  config.autoinstrument_rails = false
  # more configuration
end

使用 Ruby SDK 将数据发送到 Pyroscope OSS 或 Grafana Cloud Profiles

ruby
require "pyroscope"

Pyroscope.configure do |config|
  config.application_name = "example.ruby.app"
  config.server_address = "<URL>"
  config.basic_auth_username='<User>'
  config.basic_auth_password='<Password>'
  # Optional Pyroscope tenant ID (only needed if using multi-tenancy). Not needed for Grafana Cloud.
  # config.tenant_id='<TenantID>'
end

要配置 Ruby SDK 以将数据发送到 Pyroscope,请将 <URL> 占位符替换为相应的服务器 URL。这可以是 Grafana Cloud URL 或您自己的自定义 Pyroscope 服务器 URL。

如果您需要将数据发送到 Grafana Cloud,则必须配置 HTTP 基本身份验证。将 <User> 替换为您的 Grafana Cloud 堆栈用户,并将 <Password> 替换为您的 Grafana Cloud API 密钥。

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

Ruby 性能分析示例

查看以下资源,了解有关 Ruby 性能分析的更多信息