乘客产生大量的机架应用程序

时间:2012-03-08 22:45:18

标签: ruby-on-rails ruby nginx passenger rack

passenger-memory-stats

的输出
----- Passenger processes -----
PID    VMSize    Private  Name
-------------------------------
28572  207.4 MB  ?        Rack: /home/myapp/application
28580  207.0 MB  ?        Rack: /home/myapp/application
28588  206.0 MB  ?        Rack: /home/myapp/application
28648  206.5 MB  ?        Rack: /home/myapp/application
29005  23.0 MB   ?        PassengerWatchdog
29008  100.5 MB  ?        PassengerHelperAgent
29010  43.1 MB   ?        Passenger spawn server
29013  70.8 MB   ?        PassengerLoggingAgent
29053  202.0 MB  ?        Passenger ApplicationSpawner: /home/myapp/application
29105  202.3 MB  ?        Rack: /home/myapp/application
29114  202.3 MB  ?        Rack: /home/myapp/application
29121  202.3 MB  ?        Rack: /home/myapp/application
29130  202.3 MB  ?        Rack: /home/myapp/application
29138  202.3 MB  ?        Rack: /home/myapp/application

这看起来像很多衍生的流程......这是一个目前正在开发的应用程序,没有人(我知道)会点击它......

passenger-status

的输出
  App root: /home/myapp/application
  * PID: 29105   Sessions: 1    Processed: 0       Uptime: 15m 11s
  * PID: 29114   Sessions: 1    Processed: 0       Uptime: 14m 0s
  * PID: 29121   Sessions: 1    Processed: 0       Uptime: 14m 0s
  * PID: 29130   Sessions: 1    Processed: 0       Uptime: 14m 0s
  * PID: 29138   Sessions: 1    Processed: 0       Uptime: 14m 0s

首先,这是正常的吗?

第二,可能的原因?

2 个答案:

答案 0 :(得分:3)

对于任何有这个Rails问题的人来说......如果你在有限的内存VPS上运行,请检查并确保你调整你的max_pool,这样你就不会产生太多的应用程序实例供系统处理。默认值为6,对于内存严重的VPS来说显然太多了。

有关最大泳池设置的文档: http://www.modrails.com/documentation/Users%20guide%20Nginx.html#PassengerMaxPoolSize

答案 1 :(得分:0)

某些流程可能会从您应用的早期版本中幸存下来。我们的应用程序Rack处理每个指向我们应用程序的特定版本。

95171 2491.8 MB 4.8 MB机架:/ Deploy / theapp / releases / 20120530013237

并且有多个进程指向许多不同的版本。这导致我得出结论,当应用程序重新启动时,这些都会遗留下来。

我想可能是触摸tmp / restart.txt而不是重启apache有这种效果。所以我将:use_sudo设置为true,并重新启动'运行"#{try_sudo} / opt / local / apache2 / bin / apachectl graceful"'相反,我看到的唯一Rack过程就是那些刚刚开始的过程。