Rainbows! Rack HTTP server user/dev discussion
 help / Atom feed
From: "Lin Jen-Shin (godfat)" <godfat-hOE/xeEBYYIdnm+yROfE0A@public.gmane.org>
To: rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org
Subject: Re: negative timeout in Rainbows::Fiber::Base
Date: Thu, 30 Aug 2012 00:00:46 +0800
Message-ID: <CAA2_N1thakAOVp7ibCNic+TjEVvXE0OGLgzXH3fJ1c2UTs68oQ@mail.gmail.com> (raw)
In-Reply-To: <CAA2_N1uhfcHDbTvY+ke0Cid6=i7KEhFn8jvEirx+ptYVDacdvA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

Sorry that I didn't subscribe the mailing list (now subscribed),
so I didn't realize there's already a response. The quoted
text is copied from archive.

Eric Wong <normalperson-rMlxZR9MS24@public.gmane.org> wrote:
> "Lin Jen-Shin (godfat)" <godfat at godfat.org> wrote:
> Yes.  (Though it should've be easy to just pipe that part of my
> message to "git apply" or even "patch -p1")

I did that in the beginning, but it looks like your patch was not
created from 12281e4cee86496588814cd1851e8764caea024c,
so I cannot apply it? Anyway, not important :)

> All the Thread-based concurrency models should already just work
> with Celluloid-based apps.
> http://news.gmane.org/find-root.php?message_id=%3cBANLkTimnNQYpk7TRkiCvhDikzGHVy%3dkOdw%40mail.gmail.com%3e

And it's not worth the effort to wrap around celluloid-io for
buffering requests? Since it's using nio4r[0] underneath
and it's using libev for I/O, I thought that would be a replacement
for eventmachine?

[0]: https://github.com/tarcieri/nio4r

> It's much easier to unwatch IO objects with Cool.io than with EM, so I
> haven't done much with EM + Fibers.  There's also rack-fiber_pool...

True, working with Cool.io is much more pleasant. As for rack-fiber_pool,
I am not sure if I am correct or not, but in my humble option, that's a
totally wrong approach. I think fibers should be handled in server level,
not application level. That way, we don't need the hack for throwing :async,
and the middlewares do not need to be aware of fibers and :async,
and we won't need async-rack, and the server doesn't need to be
aware of :async, so on so forth.

I am not sure if this approach would have any bad influence, but at least
it works fine in our applications. That is, just wrap fibers around the calling
the app. (i.e. Fiber.new{ app_call(env) }.resume)

> Rainbows::EventMachine::TryDefer already uses the EM-internal thread
> pool, so I think EventMachineThreadPool would be redundant.

I didn't know this before, I guess it should work for me, though
it might not be as direct as:

https://github.com/godfat/ruby-server-exp/blob/9d44f8387739f5395bf97aff1689f17615cc4c7e/config/rainbows-em-thread-pool.rb#L21-25
  class REMTPoolClient < Rainbows::EventMachine::Client
    def app_call input
      EM.defer{ super }
    end
  end

> > https://github.com/cardinalblue/rest-more/blob/master/example/rainbows.rb#L15-19
> > class REMFClient < Rainbows::EventMachine::Client
> >   def app_call input
> >     Fiber.new{ super }.resume
> >   end
> > end
> Does it actually show benefits compared to regular EM?
> I suppose the Rack application still needs to be made Fiber-aware
> to reap benefits of Fibers

The Rack application doesn't need to be fiber-aware, but if
the libraries are fiber-aware, then it would be beneficial.
The rest of program doesn't have to know the existence of
fibers, because we don't throw :async.

> Yes, threads are far more compatible with existing gems/libraries and I
> think that's the better way to go.  Of course, just processes (with
> regular unicorn) should be most compatible, too.

At first I thought fibers are better for I/O, but after implementing
a thread based approach for the same mechanism, I started to
doubt that. I don't have a conclusion yet though.
(I am a bit nervous to switch to thread based approach on
production to find out, since it's not yet tested intensively)

On the other hand, all our apps are running on Heroku, and
we need to reduce memory usage because they have a hard
limit. That's why we're running Zbatery at the moment.

> > Sorry that I might be asking too many questions in a single thread.
> No problem!  I'm just happy that folks are showing interest

I really don't understand why Unicorn family didn't get much
attention in Ruby community. And I always feel wrong when
people are comparing Unicorn with Thin or even Passenger.
(sigh)

Many thanks for your work and help!
_______________________________________________
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


  parent reply index

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-23 20:36 Lin Jen-Shin (godfat)
     [not found] ` <CAA2_N1unOXb7Z4Jr8oKoSLu266O9Ko4o=oWzAcMA1w3=9X74KA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-08-25  2:45   ` Eric Wong
     [not found]     ` <20120825024556.GA25977-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2012-08-26  0:12       ` Lin Jen-Shin (godfat)
     [not found]         ` <CAA2_N1uhfcHDbTvY+ke0Cid6=i7KEhFn8jvEirx+ptYVDacdvA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-08-26  1:15           ` Eric Wong
2012-08-29 16:00           ` Lin Jen-Shin (godfat) [this message]
     [not found]             ` <CAA2_N1thakAOVp7ibCNic+TjEVvXE0OGLgzXH3fJ1c2UTs68oQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-08-29 21:17               ` Eric Wong
     [not found]                 ` <20120829211707.GA22726-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2012-08-30 21:33                   ` Lin Jen-Shin (godfat)
     [not found]                     ` <CAA2_N1tc=Xx8WHaM8H=EWshyzGEyX04PnkdBGj9Jdb7cSzmbRQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-08-31  1:37                       ` Eric Wong
     [not found]                         ` <20120831013731.GA16613-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2012-09-05 20:06                           ` Lin Jen-Shin (godfat)
     [not found]                             ` <CAA2_N1vfWXGw_CaaMWMijUSdMN2Pz882SYDtNEW2_6YWffgTKQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-09-05 23:27                               ` Eric Wong
     [not found]                                 ` <20120905232739.GA25153-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2012-09-22  9:52                                   ` Lin Jen-Shin (godfat)
     [not found]                                     ` <CAA2_N1v460utbL31Qu-JbGuUxav1hY4X5+cEf=Mp2rOC5efzMw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-09-22 19:42                                       ` Eric Wong
     [not found]                                         ` <20120922194222.GA6839-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2012-09-28 15:14                                           ` Lin Jen-Shin (godfat)
     [not found]                                             ` <CAA2_N1usHJVZgn5n7RaTyDCbK7eu6G4ocZAsvqsVeL6cPERskw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-09-28 19:11                                               ` Eric Wong
     [not found]                                                 ` <20120928191132.GA14292-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2012-09-28 19:24                                                   ` Eric Wong
     [not found]                                                     ` <20120928192449.GB14292-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org>
2012-10-31  0:14                                                       ` Lin Jen-Shin (godfat)
2012-12-18 11:09                                                       ` Lin Jen-Shin (godfat)
     [not found]                                                         ` <CAA2_N1tcA-HK20C8Ok1Lv9KWwMD4fctCOPHTLeD9ayRJqWby1Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-12-18 19:19                                                           ` Eric Wong

Reply instructions:

You may reply publically 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://bogomips.org/rainbows/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAA2_N1thakAOVp7ibCNic+TjEVvXE0OGLgzXH3fJ1c2UTs68oQ@mail.gmail.com \
    --to=godfat-hoe/xeebyyidnm+yrofe0a@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

Rainbows! Rack HTTP server user/dev discussion

Archives are clonable:
	git clone --mirror https://bogomips.org/rainbows-public
	git clone --mirror http://ou63pmih66umazou.onion/rainbows-public

Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.lang.ruby.rainbows
	nntp://ou63pmih66umazou.onion/inbox.comp.lang.ruby.rainbows

 note: .onion URLs require Tor: https://www.torproject.org/
       or Tor2web: https://www.tor2web.org/

AGPL code for this site: git clone https://public-inbox.org/ public-inbox