btelles
btelles

Reputation: 5420

Phusion-Passenger seems to create MANY (140+) orphaned processes

We're running 3 Apache Passenger servers sharing the same file system, each running 11 Rails applications.

We've set

  1. PassengerPoolIdleTime = 0 to ensure none of the applications ever die out completely, and

  2. PassengerMaxPoolSize = 20 to ensure we have enough processes to run all the applications.

The problem is that when I run passenger-memory-stats on one of the servers I see 210 VM's!

And when I run passenger-status I see 20 application instances (as expected)!

Anyone know what's going on? How do I figure out which of those 210 instances are still being used, and how do I kill those on a regular basis? Would PassengerMaxInstancesPerApp do anything to reduce those seemingly orphaned instances?

Upvotes: 0

Views: 709

Answers (4)

btelles
btelles

Reputation: 5420

Turns out we actually have that many Apache worker processes running, and only 24 of them are Passenger processes (asked someone a little more experienced than myself). We are actually hosting many more websites and shared hosting accounts than I thought. Thanks for all the replies though!

Upvotes: 2

Hongli
Hongli

Reputation: 18924

Maybe the processes are stuck during shutdown. Try obtaining their backtraces to see what they're doing.

Upvotes: 0

npad
npad

Reputation: 5046

You can get a definitive answer as to how many Rails processes you have by running this command:

ps auxw | grep Rails | wc -l

I doubt you really do have over 100 processes running though, as at about 50 mb each they'd collectively be consuming over 5 gb of RAM and/or swap and your system would likely have slowed to a crawl.

Upvotes: 1

cwninja
cwninja

Reputation: 9768

Not so much an answer, but some useful diagnostic advice.

Try adding the Rack::ProcTitle middleware to your stack. We have been using it in production for years. Running ps aux should give info on what the worker is up to (idle, handing a specific request etc…).

I would not assume that these processes are being spawned directly by passenger. It could be something forking deeper into your app.

Upvotes: 0

Related Questions