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!!
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:
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:
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.
Are you using ruby enterprise? http://www.rubyenterpriseedition.com/
Either use Ruby Enterprise Edition (recommended with Passenger), or use Ruby 1.9, which is also loads faster.
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.
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.