Nginx & Passenger – failed (11: Resource temporarily unavailable) while connecting to upstream

nginxphusion-passengerruby-on-railstuningUbuntu

I have an Nginx and Passenger setup that is proving problematic.

At relatively low loads the server seems to get backed up and start churning results like this into the error.log:

connect() to unix:/passenger_helper_server failed 
(11: Resource temporarily unavailable) while connecting to upstream

My passenger setup is:

passenger_min_instances 2;
passenger_pool_idle_time 1200;
passenger_max_pool_size 20;

I have done some digging, and it looks like the CPU gets pegged. Memory usage seems fine passenger_memory_stats shows at most about 700MB being used, but CPU approaches 100%.

is this enough to cause this type of error?

Should i bring the pool size down?
Are there other configuration settings I should be looking at?

Any help appreciated

Other pertinent information:

  • Amazon EC2 Small Instance
  • Ubuntu 10.10
  • Nginx (latest stable)
  • Passenger (latest stable)
  • Rails 3.0.4

Best Answer

With the CPU approaching 100% and looking at the specs of the EC2 small instance, it sounds to me like your machine is swapping. Have a look at the output of free -m while you boot up the server and then watch it when you do some load testing.

From the docs of Phusion Passenger

A larger number results in higher memory usage, but improves the ability to handle concurrent HTTP requests.

Do you really need to handle a lot of concurrent requests? If so, you should probably invest in a larger EC2 instance and then turn up your passenger_max_pool_size. It doubt that you will need more than the default of 6 that passenger provides with that little machine.