ruby-on-rails - 在本地将 rbtrace 与 Rails 4 一起使用时,如何防止等待 eval 响应超时?

标签 ruby-on-rails ruby performance

所以我在本地运行进程 ID 为 11697 的 Rails 4 应用程序(API)。我有以下设置,但我通过发出的 bash 命令得到以下响应:

*** run `sudo sysctl kernel.msgmnb=1048576` to prevent losing events (currently: 16384 bytes)
*** attached to process 11697
*** timed out waiting for eval response
*** detached from process 11697

好像没等到600秒就超时了。 I've seen this PR on github, so it seems like it should work .

此处的目标是获取 Rails 应用程序对象的多个堆快照并比较这 2 个差异以尝试检测内存泄漏。

config/environment.rb

# Load the Rails application.
require File.expand_path('../application', __FILE__)
require 'rbtrace'

# Initialize the Rails application.
Rails.application.initialize!

bash 命令提示符

bundle exec rbtrace -p 11697 -e 'Thread.new{require "objspace"; ObjectSpace.trace_object_allocations_start; GC.start(); ObjectSpace.dump_all(output: File.open("heap.json", "w"))}.join'  --timeout=600

最佳答案

看起来另一个 PR (42) 是 actually merged在 6 月 14 日解决这个问题,自 February 13th 以来他们还没有发布 rbtrace

所以代码合并到master,但是还没有通过rubygems.org发布。

您可以将 rbtrace gem 的 master 分支添加为您的 gemfile 中的依赖项,如下例所示。您可能拥有为 eval 启用超时选项的 PR 代码,但 master 分支可能尚未完全准备好用于生产。使用风险自负!

gem 'rbtrace', git: 'https://github.com/tmm1/rbtrace', branch: 'master'

关于ruby-on-rails - 在本地将 rbtrace 与 Rails 4 一起使用时,如何防止等待 eval 响应超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31015027/

相关文章:

ruby-on-rails - 如何使用 Rails/ActiveRecord 将 postgreSQL 中的主键类型更改为 bigserial

java - 这段代码的时间复杂度o()是多少? java

ruby-on-rails - 如何使用 ActionText 显示嵌入视频

ruby - Turbolinks.visit 未在同一页面上触发

php - 如何在处理多个同时请求时稳定 PHP 响应时间?

performance - 使用Hive/Hadoop连接两个排序的文件

ruby-on-rails - Rails 在使用 Devise 注册后发布多步骤表单数据

ruby-on-rails - 如果我关闭终端,在 Heroku 上启动的 rake 任务会继续运行

mysql - 如果未传递变量,则使用 DB 默认值 (Ruby on Rails)

带有随机参数计数的 Ruby 调用构造函数