Sorry, I still can't understand how to run rails in thread safe mode
under JRuby (one running instance supporting multiple concurrent requests).
If I try to enable config.threadsafe! in
config/environments/production.rb under Glassfish Gem my Rails
application still run single threaded.
Here a very simple example (environment is: glassfish gem v. 0.9.5 /
jruby 1.3.1 / rails 2.3.3 / ubuntu 9.04 / notebook centrino dual core /
2gb Ram):
rails concurrent
cd concurrent
script/generate controller test test
edit app/controllers/test_controller.rb, modify source as follow:
class TestController < ApplicationController
def test
@value = Time.now
sleep 10
end
end
edit app/views/test/test.html.erb, modify source as follow:
<%= @value %>
edit config/environments/production.rb, uncomment last line as follow:
config.threadsafe!
edit config/environemt.rbm uncomment frameworks line as follow (no
database, resource, mail support for this very simple
test...):
config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
Now run:
jruby -S gfrake config
edit config/glassfish.yml, modify config as follow (notice 4 runtime
instances !):
environment: production
jruby-runtime-pool:
initial: 4
min: 4
max: 4
And finally start glassfish gem:
jruby -S glassfish
Now, if you try to call 4 times (concurrently) the following url...
http://localhost:3000/test/test
...you must wait 40 seconds for the 4th response...
This is a wrong behaviour because trying the same test under phusion
passenger I wait only 10 seconds for the 4th response
(in fact passenger start up 4 rails processes, 1 for each concurrent
request)...
I want to know if is it possible to run Rails with only one running
instance supporting multiple concurrent requests...
Many thanks in advance...
> At 10:45 PM -0700 8/15/09, AlwaysCharging wrote:
>
>> Why would anyone use ruby over Jruby? I'm admittedly a noob about all
>> this stuff, but from what I've read jruby seems superior to ruby and
>> quite a bit faster. What would be the disadvantages of JRuby? I man
>> it's possible to use it with rails now, and JRuby is what's used by
>> default in netbeans (which is the ide I think I've settled on). So
>> why not JRuby? Would the tutorials be all that different?
>>
>
> I use both MRI and JRuby -- often at the same time in the same
> project when developing.
>
> One advantage I didn't see in the thread so for MRI is that the
> interpreter starts fast. This is great when starting lots of small
> tasks from the console.
>
> Here's a couple of pluses for JRuby that I haven't seen mentioned:
>
> 1) It is very easy to make multiple, complete, and isolated Ruby
> installation using JRuby. I know there are some tools to make this
> easier in MRI -- I even wrote a simple one -- but this is trivial in
> JRuby.
>
> 2) For some rendering operations in development mode JRuby can be 20x faster.
>
> This is a strange result -- in general I've found JRuby to be about
> twice as fast as MRI in production ... but I'd never seen this result
> before ...
>
> I've got a complex Rails application for authoring secondary science
> investigations and one of the render tasks generates a composite xml
> document that represents all of the objects in an investigation.
> Right now the largest investigation is about 350k rendered into xml
> and represents over 1100 objects. Roughly that corresponds to about
> 1100 partial calls.
>
> I have not done ANY work on improving performance in the rendering
> speed yet (lots of partials calling partials) and noticed that the
> render speed when running in MRI in development mode has gotten very
> long as authors have finally started making real investigations.
>
> I put together a benchmark measuring the time to render 11
> investigations in xml.
>
> The JRuby results were quite impressive:
>
> Development Production
> =======================================
> MRI: 849s 30s
> JRuby: 35s 18s
>
> The rendering is done with HAML.
>
> I have no idea why rendering in dev mode in MRI is SO slow.
>
> There's obviously a problem somewhere in the interaction with Rails,
> my code, MRI and development mode. But the fact that JRuby running in
> development mode renders all 11 Investigations into xml only 15%
> slower than MRI in production is great. It also means that when I am
> testing or developing these features in the app I run my dev server
> in JRuby.
>
> While I plan to work on performance later in most cases in production
> the Investigations will be frozen and the xml doc will be served from
> a page cache -- so performance improvements in rendering are not on
> the critical path for the production app.
>
> This is running on Mac OS X 10.5.8 and Rails 2.3.3
>
> MRI and JRuby versions:
>
> $ jruby -v
> jruby 1.4.0dev (ruby 1.8.7p174) (2009-08-09 6586) (Java HotSpot(TM)
> Client VM 1.5.0_19) [i386-java]
>
> $ ruby -v
> ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
>
> more details:
>
> http://groups.google.com/group/cc-developers/browse_thread/thread/af4ca01be8eb41ab?hl=en
>
> >
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---