
这里基本上有3个问题:
1)Unicorn似乎正在稳步填满所有RAM,导致我手动删除工人.
2)独角兽似乎因某种原因产生了额外的工人,尽管我已经指定了固定数量的工人(其中7人).这部分导致RAM累积,这也导致我手动删除工作人员.
3)在我的情况下,零停机部署是不可靠的.有时它会接收更改,有时我会获得网关超时.每次部署都会变得非常紧张.
我真的不喜欢使用Monit,因为它可以杀死工人而无需等待工人完成他们的请求.
那么,这是正常的吗?使用Unicorn部署的其他人是否存在RAM无法控制地增长的相同问题?
而且,工人产生的工人数量与工人数量不一致?
另一种选择是独角兽工人杀手,我将在阅读独角兽饮食记忆后尝试.
微小的更新:

因此,New Relic告诉我内存几乎达到了95%.所以我不得不杀了一个工人.有趣的是,杀死那个工人会使记忆大量减少,如下图所示.
那是怎么回事?
作为参考,这是我的unicorn.rb和unicorn_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)