【问题标题】:Why does Rails console create so many Ruby processes?为什么 Rails 控制台会创建这么多 Ruby 进程?
【发布时间】:2015-05-30 21:19:09
【问题描述】:

我用 Cron 尝试了 Rake 任务。我一开始没有 Ruby 进程,然后 Cron 作业开始并产生了一个进程。下面突出显示的过程是由 Cron 运行的,这是预期的:

我想检查是否有任何记录正在写入数据库。我运行rails c 进入Rails 控制台,并注意到我的进程列表中突然出现了另外四个Ruby 进程,如上所示。为什么会发生这种情况?我认为运行控制台应该创建一个其他进程而不是四个。

退出控制台后,我剩下三个 Ruby 进程,包括正在运行的 Rake 任务。

我正在使用 Rails 4.2。

并不是我觉得这有问题,而是我很好奇为什么一个 REPL 需要多个进程,然后在 REPL 关闭后需要两个剩余进程。

【问题讨论】:

  • 尝试在没有 cron 的情况下检查控制台;您可能将 cron 相关进程识别为控制台进程。
  • @Prakash Murthy cron 完成,剩下的两个 Ruby 进程。我杀了他们,然后尝试了 Rails 控制台。总共创建了 4 个 Ruby 进程。退出控制台后,我又回到了 2 个无限期地坐在那里的进程。

标签: ruby-on-rails ruby process cron rake


【解决方案1】:

这是因为 spring 已经默认附带 Rails 有一段时间了。

您可能会注意到第二次运行rails c 比第一次快很多。这是因为您第一次运行弹性脚本时,您的应用程序会正常加载,然后分叉运行您请求的内容。第二次围绕这个加载器脚本可以只分叉第二次,所以你得到一个更快的启动。这可能是因为您注意到了这些额外的过程。

你可以通过运行看到它们

spring status

你可以通过运行杀死它们

spring stop

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 2014-10-19
    • 2011-11-16
    • 1970-01-01
    • 2011-07-13
    相关资源
    最近更新 更多