From: Eric Wong <normalperson-rMlxZR9MS24@public.gmane.org>
To: Rainbows! list <rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org>
Subject: Re: rails 2 and slow external services
Date: Tue, 14 Dec 2010 06:35:52 +0000 [thread overview]
Message-ID: <20101214063552.GA12020@dcvr.yhbt.net> (raw)
In-Reply-To: <AANLkTi=FN02-OJc3Utzh74zMA+MX4KqHc6hUHjR5a=a_-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
ghazel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote:
> On Mon, Dec 13, 2010 at 8:57 PM, Eric Wong <normalperson-rMlxZR9MS24@public.gmane.org> wrote:
> > ghazel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote:
> >> > ghazel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote:
> >> >> Some of my page loads (currently serviced by Unicorn) spend a great
> >> >> deal of time waiting for external services (OpenID, OAuth, etc over
> >> >> Net::HTTP and curb), so I'm looking at Rainbows!. I use Rails 2.3.10.
> >>
> >> This is Ruby 1.8.7 (REE). Is there any interesting difference between
> >> ThreadPool and ThreadSpawn in this environment?
> >
> > ThreadPool is generally more predictable, but ThreadSpawn has lower
> > memory usage if your traffic spikes are intermittent or low.
> >
> > ThreadSpawn is much like the original Mongrel and ThreadPool was an
> > experiment with Ruby 1.9 in mind. 1.9 has more expensive (but slightly
> > more concurrent) threading. If your bottlenecks are external HTTP
> > requests on 1.8, but first instinct would be to use ThreadSpawn.
> >
> > Ruby 1.9 + ThreadPool would probably be well-suited for large file
> > serving to LAN clients with many slowish disks as it can use sendfile
> > via IO.copy_stream), but if you can afford the constant memory overhead,
> > it could be good in 1.8, too.
>
> I don't mind constant memory overhead - actually I prefer it to
> spikey memory usage with an unknown peak. Otherwise they should be the
> same?
Having idle threads with ThreadPool would affect GC performance,
actually.
> I'm running a bit of my traffic through some Rainbows! right now, but I got:
>
> 2010/12/14 02:30:24 [error] 3183#0: *9229917 upstream timed out (110:
> Connection timed out) while reading response header from upstream,
> client: 1.2.3.4, server: mysite.com, request: "GET /blah HTTP/1.1",
> upstream: "http://unix:/tmp/rainbows.sock:/blah", host: "mysite.com",
> referrer: "https://foofoo.com"
> 2010/12/14 04:28:25 [error] 3182#0: *9440717 upstream timed out (110:
> Connection timed out) while reading response header from upstream,
> client: 5.6.7.8, server: mysite.com, request: "GET /blah HTTP/1.1",
> upstream: "http://unix:/tmp/rainbows.sock:/blah", host: "mysite.com"
>
> From nginx in the error log. My proxy_read_timeout is 300, and my
> listen backlog is 2048 (for now...). Basically my Rainbows! config is
> identical to my Unicorn config, where I have not seen that happen,
> except I added "Rainbows! { use :ThreadPool; worker_connections 100
> }".
Was your app hitting the Unicorn kill -9 timeout frequently before? In
Rainbows!, the kill -9 timeout only kicks in when the entire
interpreter/VM is stuck due to a broken C extension or bug in Ruby.
If it's some component of your app taking a long time (and relying on
the Unicorn kill -9 timeout), you can try the Rainbows::ThreadTimeout
middleware: http://rainbows.rubyforge.org/Rainbows/ThreadTimeout.html
--
Eric Wong
_______________________________________________
Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
http://rubyforge.org/mailman/listinfo/rainbows-talk
Do not quote signatures (like this one) or top post when replying
next prev parent reply other threads:[~2010-12-14 6:49 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-13 0:14 rails 2 and slow external services ghazel-Re5JQEeQqe8AvxtiuMwx3w
[not found] ` <AANLkTikYESRSJbG3TViBPcsj7PDwcQ4O__xdtidvn_z1-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-13 10:39 ` Eric Wong
[not found] ` <20101213103936.GA8440-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2010-12-13 20:40 ` ghazel-Re5JQEeQqe8AvxtiuMwx3w
[not found] ` <AANLkTikD5qSSxb_qtdMXF4pznu3EPxG7+6nVJLRkjttH-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-14 4:57 ` Eric Wong
[not found] ` <20101214045720.GC5051-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2010-12-14 6:14 ` ghazel-Re5JQEeQqe8AvxtiuMwx3w
[not found] ` <AANLkTi=FN02-OJc3Utzh74zMA+MX4KqHc6hUHjR5a=a_-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-14 6:35 ` Eric Wong [this message]
[not found] ` <20101214063552.GA12020-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2010-12-14 7:13 ` ghazel-Re5JQEeQqe8AvxtiuMwx3w
[not found] ` <AANLkTik+HpLvQTrNtLFRZ4xYtN4i_F8JVsBTT8odi4tm-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-14 7:49 ` Eric Wong
[not found] ` <20101214074944.GA13496-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2010-12-14 8:03 ` ghazel-Re5JQEeQqe8AvxtiuMwx3w
[not found] ` <AANLkTiks_hBMMTHMEDmaxnya=pogx67AzK4Dzz+Kfbmz-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-14 17:27 ` Eric Wong
[not found] ` <20101214172748.GA18131-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2010-12-15 2:01 ` ghazel-Re5JQEeQqe8AvxtiuMwx3w
[not found] ` <AANLkTikegPX2-6Q93++bz_aLt+9nLPJXjg+NkL8tDjeE-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-15 2:40 ` Eric Wong
[not found] ` <20101215024043.GA10349-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2010-12-15 4:30 ` ghazel-Re5JQEeQqe8AvxtiuMwx3w
2010-12-15 22:28 ` ghazel-Re5JQEeQqe8AvxtiuMwx3w
[not found] ` <AANLkTimyy5XyVFF4+MWWgxfb63fCoAmWRYM=MEjVWn96-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-20 2:52 ` Eric Wong
[not found] ` <20101220025256.GB20300-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2010-12-20 3:04 ` ghazel-Re5JQEeQqe8AvxtiuMwx3w
2010-12-16 14:39 ` ghazel-Re5JQEeQqe8AvxtiuMwx3w
[not found] ` <AANLkTi=7OhyTwkHsp_rXU7Gp1PokihiQ9bJigpO-BfN6-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-20 1:00 ` Eric Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://yhbt.net/rainbows/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101214063552.GA12020@dcvr.yhbt.net \
--to=normalperson-rmlxzr9ms24@public.gmane.org \
--cc=rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhbt.net/rainbows.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).