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
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
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.
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