phusion / passenger

A fast and robust web server and application server for Ruby, Python and Node.js
https://www.phusionpassenger.com/
MIT License
4.99k stars 548 forks source link

Global queue seizes up if it gets lots of requests on startup #265

Closed FooBarWidget closed 10 years ago

FooBarWidget commented 10 years ago

From psion@geekspace.com on December 04, 2008 21:18:21

I have a little script that I use after starting Apache, in order to prime all my Rails instances to avoid users having to wait for the process start-up time. It goes like this:

for ((i=0;i<100;i++));do ((sleep 1; wget -q --output-document=/dev/null http://localhost &) ;done

Without global queuing enabled, this works fine; after it runs and the server has a minute to settle, and the wget processes have completed, and things look like this:

passenger-status

----------- General information ----------- max = 25 count = 25 active = 0 inactive = 25 Using global queue: no Waiting on global queue: 0

----------- Applications ----------- /app/rails/einstein: PID: 13972 Sessions: 0 PID: 13964 Sessions: 0 ...

However, if I enable global queue, none of the requests ever complete, the service becomes nonresponsive, and my status output after CPU idle returns to 100% looks like this:

passenger-status

----------- General information ----------- max = 25 count = 25 active = 25 inactive = 0 Using global queue: yes Waiting on global queue: 4

----------- Applications ----------- /app/rails/einstein: PID: 15011 Sessions: 1 PID: 15013 Sessions: 1 ...

The number waiting is not always exactly 4, but is generally in that neighborhood, and occasionally the count will go up to 26, but the lock-up happens every single time.

The main thing that concerns me about this is whether it represents a stability issue that could be triggered under more realistic load conditions.

Original issue: http://code.google.com/p/phusion-passenger/issues/detail?id=164

FooBarWidget commented 10 years ago

From honglilai on December 05, 2008 04:31:52

Already fixed several days ago in git.

Status: Fixed
Labels: Milestone-2.0.5