4

I'm running redmine (a RoR app) on my server using passenger / Apache 2.2. Passenger and ruby are using way too much memory.

Is there a more memory effective way to run redmine/ruby?

I only need to support a half dozen redmine users. I want to continue to use Apache, but I'm open to all suggestions that aren't "use nginx/lighttpd" instead.

(The following data is from a 512MB VPS, so Ruby is using more than 128MB just for redmine)

user ....... %mem   ....... process
-----------------------------------
www-data ... 13.6   0:00.65 ruby1.8
www-data ... 12.2   0:04.86 ruby1.8

www-data ...  9.4   0:04.15 apache2
www-data ...  9.0   0:13.94 apache2
www-data ...  3.2   0:00.27 apache2

root     ...  2.5   0:00.23 apache2 
root     ...  1.9   0:01.19 ruby1.8 

So, what's better for me than Passenger?

Thanks for your thoughts!!

Rich
  • 945

5 Answers5

6

You can configure how many Rails processes Apache/passenger spawns. For your size (3 concurrent requests) you should be fine with 2 rails processes:

Set these in your apache config:

PassengerMaxPoolSize 2
PassengerMaxInstancesPerApp 2

The MaxPoolSize determines how many instances can be started maximally, the MaxInstancesPerApp determines how many instances each web-app can have.

You might want to play with:

PassengerPoolIdleTime 

to specify how many seconds an instance must be idle before it is unloaded. Default is 300 seconds.

I run pretty high traffic web application with 3 instances without any problems.

Oh and - the Ruby Enterprise Edition helps too.

jcfischer
  • 186
2

Are you using ruby enterprise? http://www.rubyenterpriseedition.com/

kbrower
  • 31
1

Either use Ruby Enterprise Edition (recommended with Passenger), or use Ruby 1.9, which is also loads faster.

1

How many concurrent requests do you need to support ? I would use nginx and a small cluster of mongrels. This way you can limit the amount of resource your ruby application uses.

Dave Cheney
  • 18,875
0

I had more success running mongrels/mongrel_cluster with apache proxypass for redmine. It doesn't need that much performance(they're a bunch of very big/slow processes, and tend to call external processes on top of that. You might want to try it in a benchmark situation and see. It was also dead-simple for me to setup.

Perlchild
  • 114