Hi,
I am new to Jruby.
Until now, I couldn’t get jruby to work with any web server besides
WEBrick.
thin, apache/nginx (with passenger), litespeed (ruby-lsapi), lighttpd
(with fcgi), webroar… all of them do not work coz Jruby can’t build
gem native extensions.
What are the web servers that Jruby can deploy Rails?
You can also use the ‘glassfish’ gem, the ‘mongrel’ gem, GlassfishV3
without a WAR file, or any java application server (after packaging
with the ‘warbler’ gem)
]$ jruby -S gem install glassfish
]$ glassfish -e development
has anyone published a performance analysis of these? I would love if
someone built a rails or other ruby app and load tested it under all
these
app servers/containers to understand the perf under different
concurrency/thread levels (even across varying complex controller
methods
like 1 that hit DB, 1 hit DB + Cache, 1 XML render, 1 JSON, etc)
Why does thin, webroar
build gem native extensions to get installed by ruby 1.8 or 1.9 ??
Does rubygems downloads a source and then they are compiled to be
executable by ruby interpreter?
If so, why does Jruby can’t build native C libraries for those gems?
“Many Gems will work fine in JRuby; however, some Gems build native C
libraries as part of their install process. These Gems will not work in
JRuby unless the Gem has also provided a Java equivalent to the native
library.”
in http://kenai.com/projects/jruby/pages/GettingStarted
AD: I am working on a really large set of tests around Ruby on Rails
deployment in order to find out the best performance of it.
It involves: jruby, ruby1.8, ruby1.9, ruby enterprise, rubinius,
mongrel, thin, apache, nginx, passenger, load balancing solution etc
I need to find the perfect RoR application and benchmark software for
that. If you have a clue, please contact me.
AD wrote:
has anyone published a performance analysis of these? I would love if
someone built a rails or other ruby app and load tested it under all
these
app servers/containers to understand the perf under different
concurrency/thread levels (even across varying complex controller
methods
like 1 that hit DB, 1 hit DB + Cache, 1 XML render, 1 JSON, etc)
For benchmarking i would say apache benchmark (ab) or httpperf seem to
the
the simplest out of the box for throwing concurrency and max connections
at
an http connection and measuring output. There are more advanced tools
like
JMeter that will throttle but that may be a bit much for what you are
trying
to accomplish. I think it could be as simple as
where -c is the number of concurrent threads and -n is the total number
of
requests. The above statement would run 100 loops where each loop
launched
10 concurrent threads of requests at the /method1 call
I am very interested in seeing the results so let me know if you need a
hand
putting the test together, I would be happy to help.
I would love to hear more about your findings. I’m sure almost all
these servers can be improved (perf-wise) and we still haven’t really
crowned a “one true server” since they all serve different needs.
One thing to note about using “ab” for benchmarking: it doesn’t
maintain a session, so hitting a session-aware request will re-spawn a
new session for each hit. If you need to do that, you’ll want to look
at something like httperf for benchmarking.
I’d also recommend running the benchmarks from a separate machine when
possible, so they don’t choke the actual server process too much.
Adam, currently I am using apache benchmark.
Can I have your email address in order to discuss more things about
this?
Or just send me a message: brgsousa at gmail dot com
Regards,
Bruno
AD wrote:
Bruno,
For benchmarking i would say apache benchmark (ab) or httpperf seem to
the
the simplest out of the box for throwing concurrency and max connections
at
an http connection and measuring output. There are more advanced tools
like
JMeter that will throttle but that may be a bit much for what you are
trying
to accomplish. I think it could be as simple as
where -c is the number of concurrent threads and -n is the total number
of
requests. The above statement would run 100 loops where each loop
launched
10 concurrent threads of requests at the /method1 call
I am very interested in seeing the results so let me know if you need a
hand
putting the test together, I would be happy to help.
Charles, I looked everywhere for a complete batch of tests like this.
But didn’t succeded. That’s why I’m running my own tests in order to
analyze those RoR web servers.
Do you think there is a lack of those kind of benchmarking too?
Charles Nutter wrote:
I would love to hear more about your findings. I’m sure almost all
these servers can be improved (perf-wise) and we still haven’t really
crowned a “one true server” since they all serve different needs.
One thing to note about using “ab” for benchmarking: it doesn’t
maintain a session, so hitting a session-aware request will re-spawn a
new session for each hit. If you need to do that, you’ll want to look
at something like httperf for benchmarking.
I’d also recommend running the benchmarks from a separate machine when
possible, so they don’t choke the actual server process too much.