Need clarification on mongrel, rails, threads, and performance

My understanding is that:

  1. rails is single threaded and serves one request at a time
  2. mongrel is single threaded and can process one rails request at a
    time
  3. mongrel_cluster starts a few mongrel servers on the same machine

Based on this, the single most important factor becomes the time it
takes to load a single page (to avoid blocking).

If this is all true, what’s considered a “good” page loading time?

Thank you.

On 13 April 2010 14:19, skarayan [email protected] wrote:

My understanding is that:

  1. rails is single threaded and serves one request at a time
  2. mongrel is single threaded and can process one rails request at a
    time
  3. mongrel_cluster starts a few mongrel servers on the same machine

Based on this, the single most important factor becomes the time it
takes to load a single page (to avoid blocking).

Agreed. Consider Passenger though (as it’s easier to manage than
Mongrels)
or JRuby if you want multi-threaded serving.

If this is all true, what’s considered a “good” page loading time?

That’s a “How long is a piece of string” type of question. I’d say aim
for
50-100ms, but it absolutely depends on what you’re doing. As long as
the
speed of page load given the amount of servers and traffic you have is
acceptable for your users then don’t worry about it.

Benchmark, measure, improve/accept rather than ask for opinions - it
really
is the only way.

Cheers,

Andy

I am trying to do some rough math:

Assuming 100ms per page, that’s about 10 requests per second.
With 8 mongrels per cpu (based on suggestions on the web), that’s 80
requests per second.

This seems like a very low request/second per machine.
How are people getting 1000 or so requests per second? Is my math
wrong?

What the average overhead by mongrel for cpu and ram?

Thank you.

On 13 April 2010 16:02, skarayan [email protected] wrote:

I am trying to do some rough math:

Assuming 100ms per page, that’s about 10 requests per second.
With 8 mongrels per cpu (based on suggestions on the web), that’s 80
requests per second.

I’d say 100ms should be the upper end, you’d want to be aiming for much
faster than that but anyway.

This seems like a very low request/second per machine.
How are people getting 1000 or so requests per second? Is my math
wrong?

High performance sites generally tend to use a lot of caching. Rails
has a
lot of caching mechanisms built in - page caching, partial caching,
generic
caching.

What the average overhead by mongrel for cpu and ram?

No idea, I use Passenger. The overhead for Passenger is hard to
determine,
but my clients are happy with the performance so that’s what counts.

The best bet might be to see what percentage of your hits are to the
homepage and each internal page type. Then setup a JMeter profile to
hit
pages in that ratio and see what you get. You can then try tweaking and
caching. But find out your numbers before worrying about it - don’t
guess
at performance, measure!

Cheers,

Andy

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs