Ruby
Ruby Profiler 彻底改变了 Ruby 应用程序的性能调整。它与 Pyroscope 集成,提供实时性能数据,使开发人员能够深入了解其 Ruby 代码库。此工具对于识别性能问题、优化代码效率以及增强 Ruby 应用程序的整体速度和可靠性至关重要。
注意
请参阅 可用的性能分析类型,了解 Ruby 支持的概要文件类型的列表。
开始之前
要捕获和分析性能分析数据,您需要一个托管的 Pyroscope OSS 服务器或一个托管的 带有 Grafana Cloud Profiles 的 Pyroscope 实例(需要一个免费的 Grafana Cloud 帐户)。
Pyroscope 服务器可以是用于开发的本地服务器,也可以是用于生产用途的远程服务器。
将 Ruby 性能分析添加到您的应用程序
将 pyroscope
gem 添加到您的 Gemfile
bundle add pyroscope
配置 Ruby 客户端
将以下代码添加到您的应用程序中。如果您使用的是 Rails,请将其放入 config/initializers
目录中。此代码将初始化 Pyroscope 性能分析器并开始性能分析
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 集成提供了多种标记性能分析数据的方法。例如,您可以在初始化性能分析器时提供标签
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
或者您可以动态标记代码的某些部分
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
Pyroscope.configure do |config|
config.autoinstrument_rails = false
# more configuration
end
使用 Ruby SDK 将数据发送到 Pyroscope OSS 或 Grafana Cloud Profiles
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 性能分析的更多信息