JRuby/TorqueBox for high performance / mission critical application
Asked Answered
C

2

7

We are evaluating few options for developing a telecommunication related application platform (and migrating/consolidating some of the standalone apps into the new platform). One of our main concerns is the ability to handle high volume of requests during peak hours.

We feel the TorqueBox seems to an interesting solution worthy of consideration because:

  • Speed (Next to pure Java performance)
  • Faster development time over Java
  • Maintainability
  • Support for threads/concurrency even though it's Ruby
  • Faster/Easier front end development with Rails
  • ...
  • RedHat supported and runs on JBoss (scalability, future development and ability to call Java if necessary)
  1. Has anyone developed/deployed similar application(s) with JRuby/TorqueBox?
  2. Any serious performance bottlenecks ahead? (or why we shouldn't use JRuby and should stick with Java?)
Conduce answered 14/3, 2013 at 11:47 Comment(2)
From what I gathered from the benchmarks and IRC: JRuby/Torquebox can and do handle the high loads pretty well. We might be developing a PoC app using Celluloid.IO (for concurrency) + TorqueBox and test how it would fare with a Java reference app. Will update with load stats if we decide to develop the JRuby PoC app.Conduce
Combining celluloid:io with Torquebox seemed to be an overkill at least for our requirement and we ended up using TB's built-in queue functionalities and those seem to work without issues. One thing to watch out is, we noticed running-on development mode gave errors with jboss memory limits. Deploying the app in production mode cleared them.Conduce
I
1

The answer is YES but be aware of memory leaks (gems, threadsafety issues, etc). You have to be familiar with tools like VisualVM, Eclipse MAT and/or NewRelic.

We're successfully using Torquebox on production for some clients on amazon EC2 handling 60k-80k visits per day (new c3 instances are great for Java).

Deployment is also an issue. We're unable to setup any kind of rolling restart because of memory consumption. So every time we deploy using Capistrano a full JBoss restart is needed (no big issue for us).

Bests, Antonio

Irkutsk answered 18/2, 2014 at 12:43 Comment(0)
C
0

yes any mature Java web-server with JRuby is a valuable option. the details of handling high-loads on peak hours will really depend on what kind of app you'll be running, how much "hardware" can you afford to use but in general it's achievable but be aware there might still be some "gotchas" e.g. Ruby libraries (gems) that do not handle thread-safety well. you simply need to understand how to proceed than - which seems you do since you're want to use 'Celluloid.IO' :)

Consecution answered 26/1, 2014 at 10:20 Comment(1)
Celluloid:IO seemed to be an overkill for our situation once we really understood our requirements and got familiar with the TB, and we simply settled for the built in queues of JB/TB.Conduce

© 2022 - 2024 — McMap. All rights reserved.