相关疑难解决方法(0)

Unicorn Memory Usage几乎填满了所有RAM

新的Relic Process快照

这里基本上有3个问题:

1)Unicorn似乎正在稳步填满所有RAM,导致我手动删除工人.

2)独角兽似乎因某种原因产生了额外的工人,尽管我已经指定了固定数量的工人(其中7人).这部分导致RAM累积,这也导致我手动删除工作人员.

3)在我的情况下,零停机部署是不可靠的.有时它会接收更改,有时我会获得网关超时.每次部署都会变得非常紧张.

我真的不喜欢使用Monit,因为它可以杀死工人而无需等待工人完成他们的请求.

那么,这是正常的吗?使用Unicorn部署的其他人是否存在RAM无法控制地增长的相同问题?

而且,工人产生的工人数量与工人数量不一致?

另一种选择是独角兽工人杀手,我将在阅读独角兽饮食记忆后尝试.

微小的更新:

在此输入图像描述

因此,New Relic告诉我内存几乎达到了95%.所以我不得不杀了一个工人.有趣的是,杀死那个工人会使记忆大量减少,如下图所示.

那是怎么回事?

作为参考,这是我的unicorn.rbunicorn_init.sh.希望有人能告诉我某处有错误.

unicorn.rb

root = "/home/deployer/apps/myapp/current"
working_directory root
pid "#{root}/tmp/pids/unicorn.pid"
stderr_path "#{root}/log/unicorn.stderr.log"
stdout_path "#{root}/log/unicorn.log"

listen "/tmp/unicorn.myapp.sock"
worker_processes 7
timeout 30

preload_app true

before_exec do |_|
  ENV["BUNDLE_GEMFILE"] = '/home/deployer/apps/myapp/current/Gemfile'
end

before_fork do |server, worker|
  # Disconnect since the database connection will not carry over
  if defined? ActiveRecord::Base
    ActiveRecord::Base.connection.disconnect!
  end

  old_pid = "#{root}/tmp/pids/unicorn.pid.oldbin`"
  if old_pid != server.pid
    begin
      sig = (worker.nr + 1) >= server.worker_processes …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails unicorn

14
推荐指数
1
解决办法
5906
查看次数

标签 统计

ruby ×1

ruby-on-rails ×1

unicorn ×1