Hi guys,

Our app has been getting traction recently, and we struggle to cope with 
the traffic. I was hoping you guys could point me in the right direction.

For each request, the app does some heavy calculations. They are not done 
in Ruby, we use a compiled, shared lib for this. Our current architecture 
is:

- user request triggers 2 background jobs (via Workling/Starling)
- the first worker does some pre-processing (including polling the DB), 
call the shared lib, and loop. It sends results along the way to the second 
worker.
- the second worker does some post-processing and sends results back to the 
app.

I think the key problem is the call to the shared lib is blocking, so when 
we get lots of calls at once, it seems to me all the workers are stuck on 
this lib and nothing else happens (there are a limited number of workers).

I have a couple of options in mind, but I have no idea which one should 
give better results:

- upgrade to Ruby 1.9.3 (from 1.8.7)
- migrate from DL/Load to FFI (but I don't believe it sorts the blocking 
issue)
- consider another Ruby implementation
- consider a different architecture. For instance I could run this shared 
lib on a separate instance without anything else (just Ruby processes) but 
I am not sure how to do this considering speed will be key.


Thanks!
PJ

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/rubyonrails-talk/-/exNfURbzd9UJ.
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.

Reply via email to