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 profiler 并开始剖析。
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 集成提供了多种方式来标记剖析数据。例如,您可以在初始化 profiler 时提供标签:
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 标记一个 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 Basic 认证。将 <User>
替换为您的 Grafana Cloud stack 用户,将 <Password>
替换为您的 Grafana Cloud API 密钥。
如果您的 Pyroscope 服务器启用了多租户,您需要配置一个租户 ID。将 <TenantID>
替换为您的 Pyroscope 租户 ID。
Ruby 剖析示例
请查看以下资源,了解更多关于 Ruby 剖析的信息: