best option to run RoR?

dlhhyct

Active Member
#1
Currently I'm running litespeed in front of mongrel processes, and it works great.

Today I just read about the new LiteSpeed RubyRunner (LSRR) and I'm getting confused. which of the 5 options yield the maximum performance? wait, minus fastCGI (too hard for me) and CGI. which of following 3 options yield max performance for a RoR site?

Ruby LSAPI,
LiteSpeed RubyRunner (LSRR),
Mongrel

http://www.litespeedtech.com/support/wiki/doku.php?id=litespeed_wiki:ruby_rails_easy
 

mistwang

LiteSpeed Staff
#3
Ruby LSAPI is the best choice for RoR. It gives the best performance as well the easiest configuration, the wiki uses Ruby LSAPI.
LSRR is for running CGI in a persistent interpreter, ruby interpreter need to do extra work to shield one CGI script from interfering with the others, better using Ruby LSAPI directly when you can.
 

dlhhyct

Active Member
#4
more questions

thanks for the info, and i have more questions.

To reload a RoR app, currently i use capistrano to restart mongrel processes, very simple, and it won't affect other vhost. how is it done using LSAPI, disable/enable vhost, or restart whole webserver?

under which scenario would one use LSRR instead of LSAPI? I mean what LSRR attempt to accomplish that LSAPI can't do?

for my typical RoR app, I create a vhost to load balance a few mongrel processes, all in one server. If traffic grows, I think I can still use one LS vhost to load balance more mongrel processes on several servers, correct? how is scalability done using LSAPI cross several servers?
 

mistwang

LiteSpeed Staff
#5
To reload a RoR app, currently i use capistrano to restart mongrel processes, very simple, and it won't affect other vhost. how is it done using LSAPI, disable/enable vhost, or restart whole webserver?
For LSWS + Ruby LSAPI, just restart LSWS, restart is graceful, no downtime at all.

under which scenario would one use LSRR instead of LSAPI? I mean what LSRR attempt to accomplish that LSAPI can't do?
LSRR is implemented on top of LSAPI, it is for running plain CGI scripts written in Ruby.

If traffic grows, I think I can still use one LS vhost to load balance more mongrel processes on several servers, correct? how is scalability done using LSAPI cross several servers?
Yes, you can do that. In that case, I would recommend running LSWS + LSAPI on each every cluster node with a front-end load balancer. It should be easier to setup than running LSAPI on a node along, faster than using Mongrel, and pages cached in file system on a node can served by LSWS directly.

For how to use capistrano together with LSWS + LSAPI in a cluster, please read the discussion in
http://www.litespeedtech.com/support/forum/showthread.php?t=522&page=2
 
Last edited:

mistwang

LiteSpeed Staff
#7
You can LSWS as stateless load balancer as what you did with Mongrel cluster. We will release a dedicate load balancer which is session-aware. You can also use any other load balance proxies like apache, pond, etc., as long as it fits what your need. :)
 

dlhhyct

Active Member
#8
command to graceful restart lsws?

what's the equivalent of graceful restart in a command? /etc/init.d/lsws restart ? so i can write a rake task.

from my simple benchmark, ruby lsapi give 3x performance of mongrel. good job well done.
 
Top