Hey, We (Pivotal Labs) have bee experimenting with Mongrel and Rails Edge to see what happens if we remove the mutex around the dispatch to Rails, our goal being to reduce memory usage in virtualized environments where memory is tight. We''re pretty happy with the results and ready to put together a real patch for Mongrel to allow users to run Rails this way. So, we''re ready to patch Mongrel to support this. It probably doesn''t make sense to just remove the handler''s mutex around dispatch as this could lead to num-processors threads in rails concurrently. Probably we''ll want to limit that separately. I''m thinking we should patch the handler to optionally allow threading, then make mongrel_rails support this + a limit on how many requests to process concurrenty. I''m wondeing what kind of patch you would want, and whether anyone has suggestions. Thanks, pt.
isn''t rails 2.2 / edge supposed to have threading built in ? or am I missing something here ? also mongrel can handle multiple threads well . In fact I have tried it in mongrel handlers and it works very well (for 75 concurrent requests each taking 5 minutes to complete). On Wed, Aug 27, 2008 at 10:29 PM, Parker Thompson <parkert at gmail.com> wrote:> Hey, > > We (Pivotal Labs) have bee experimenting with Mongrel and Rails Edge > to see what happens if we remove the mutex around the dispatch to > Rails, our goal being to reduce memory usage in virtualized > environments where memory is tight. We''re pretty happy with the > results and ready to put together a real patch for Mongrel to allow > users to run Rails this way. So, we''re ready to patch Mongrel to > support this. > > It probably doesn''t make sense to just remove the handler''s mutex > around dispatch as this could lead to num-processors threads in rails > concurrently. Probably we''ll want to limit that separately. I''m > thinking we should patch the handler to optionally allow threading, > then make mongrel_rails support this + a limit on how many requests to > process concurrenty. > > I''m wondeing what kind of patch you would want, and whether anyone has > suggestions. > > Thanks, > > pt. > _______________________________________________ > Mongrel-users mailing list > Mongrel-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/mongrel-users >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/mongrel-users/attachments/20080828/21c88e55/attachment.html>
On Wed, Aug 27, 2008 at 9:38 PM, Piyush Ranjan <piyush.pr at gmail.com> wrote:> isn''t rails 2.2 / edge supposed to have threading built in ? or am I missing > something here ? >Rails 2.2 is thread-safe. This doesn''t mean that it is automatically used this way.> also mongrel can handle multiple threads well . In fact I have tried it in > mongrel handlers and it works very well (for 75 concurrent requests each > taking 5 minutes to complete). >Mongrel can handle multiple threads, but Rails runs inside a big lock/mutex (because until 2.2 it isn''t thread-safe). This whole discussion is about changing/removing the lock. Jonathan -- Jonathan Weiss http://blog.innerewut.de http://twitter.com/jweiss
FYI, we are pretty much done with this: http://github.com/pivotal/mongrel/tree/master We''ll probably test it a bit more tomorrow and then release it into the wild. Any feedback would be appreciated. Thanks, pt. On Wed, Aug 27, 2008 at 1:29 PM, Jonathan Weiss <jw at innerewut.de> wrote:> On Wed, Aug 27, 2008 at 9:38 PM, Piyush Ranjan <piyush.pr at gmail.com> wrote: >> isn''t rails 2.2 / edge supposed to have threading built in ? or am I missing >> something here ? >> > > Rails 2.2 is thread-safe. This doesn''t mean that it is automatically > used this way. > >> also mongrel can handle multiple threads well . In fact I have tried it in >> mongrel handlers and it works very well (for 75 concurrent requests each >> taking 5 minutes to complete). >> > > Mongrel can handle multiple threads, but Rails runs inside a big > lock/mutex (because until 2.2 it isn''t thread-safe). > > This whole discussion is about changing/removing the lock. > > Jonathan > > -- > Jonathan Weiss > http://blog.innerewut.de > http://twitter.com/jweiss > _______________________________________________ > Mongrel-users mailing list > Mongrel-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/mongrel-users >