From: "Iñaki Baz Castillo" <ibc@aliax.net>
To: mongrel-unicorn@rubyforge.org
Subject: Re: "unicorn -D" always returns 0 "success" (even when failed to load)
Date: Thu, 24 Dec 2009 10:30:01 +0100 [thread overview]
Message-ID: <200912241030.02160.ibc@aliax.net> (raw)
In-Reply-To: <20091223203544.GB13735@dcvr.yhbt.net>
El Miércoles, 23 de Diciembre de 2009, Eric Wong escribió:
> > > Adding this code doesn't solve problems. Either way the site can
> > > become inaccessible/unusable and problems are noticeable very quickly.
> >
> > Sure, but how to explain that to Hearteat? :)
>
> I had a lot of trouble coming to terms with this one myself :)
>
> Eventually I reasoned that the heartbeat mechanism is to protect against
> unforeseen failures way down the line (and sometimes outside of the
> application's control).
>
> It's (hopefully) common and expected to check applications shortly
> following deployments, so heartbeat isn't for that.
Yes, you are right.
> However applications have a tendency to break in unforseen ways, and
> only in production, and at the worst times. These failures happen well
> after the app is deployed :)
Yes, every application breaks just in the moment that it shouldn't :)
However I'm building my app now and when start it it usually has errors, and
that's good as it means I'm working :)
But sincerelly I would like to see the error just once rather than many times
due to workers respawn :)
Also, is there any "interval" parameter so a worker is not re-spawned until
such timeout (after die).
> > This is: usually to verify the process status the PID file/value is
> > inspected. If there is a process running under such PID then we "assume"
> > that process is Unicorn. In case that PID is stolen by any other process
> > (since PID file wasn't deleted) nobody realizes of it.
>
> Under modern Linux systems, you have several options...
>
> tr '\0' ' ' < /proc/$PID/cmdline # show the command-line
>
> pmap $PID | grep unicorn_http.so # not many other things load this
>
> lsof -p $PID # can check listening ports/log files
Yes! this is much better! :)
> Unfortunately I don't use other OSes enough to remember the
> equivalents...
The server will run just on Linux (Unix) server :)
> > A way to determine it could be asking to Unicorn master process (using
> > i.e. DRB) its PID and match it against the PID value stored in the
> > pidfile. Of course it would require some kind of communication with
> > unicorn master process to get its PID, is it possible now in some way?
>
> I don't see how being under a specific PID actually matters. Why not
> just write a script that sends an HTTP request to check?
>
> Workers will die soon after the first request, or (timeout/2) seconds if
> a master dies anyways.
Well, in fact I want to code some console utility to get information from the
application (loaded configuration, check the database(s) connection and so).
For that I was thinking in a DRb server running in the master because it must
bind in some TCP port.
The problem is that I should stop the DRb server before master reexec to avoid
EADDINUSE. Well, I could code some rescue block...
> > I didn't know about such options in .ru file. Are those options
> > supposed to be read by the backend?
>
> I don't believe it's well-documented, I only found out from reading the
> rackup code and I'm not really a fan of magic comments, but they're only
> for the basic command-line arguments rackup handles:
>
> $ rackup -h
...
> -D, --daemonize run daemonized in the background
Why "daemonize" is not present in unicornf configuration file?
Really thanks a lot for all your help.
--
Iñaki Baz Castillo <ibc@aliax.net>
_______________________________________________
Unicorn mailing list - mongrel-unicorn@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-unicorn
Do not quote signatures (like this one) or top post when replying
next prev parent reply other threads:[~2009-12-24 9:35 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-23 2:20 "unicorn -D" always returns 0 "success" (even when failed to load) Iñaki Baz Castillo
2009-12-23 7:26 ` Eric Wong
2009-12-23 10:22 ` Iñaki Baz Castillo
2009-12-23 20:35 ` Eric Wong
2009-12-24 9:30 ` Iñaki Baz Castillo [this message]
2009-12-24 19:34 ` Eric Wong
2009-12-25 22:09 ` Iñaki Baz Castillo
2009-12-26 1:30 ` Iñaki Baz Castillo
2009-12-25 23:58 ` Iñaki Baz Castillo
-- strict thread matches above, loose matches on Subject: below --
2009-12-26 4:29 Iñaki Baz Castillo
2009-12-26 6:16 ` Eric Wong
2009-12-26 15:47 ` Iñaki Baz Castillo
2009-12-26 18:23 ` Iñaki Baz Castillo
2009-12-27 1:31 ` Eric Wong
2009-12-27 3:06 ` Iñaki Baz Castillo
2009-12-27 3:07 ` Iñaki Baz Castillo
2009-12-28 3:29 ` Eric Wong
2009-12-28 10:39 ` Iñaki Baz Castillo
2009-12-28 12:50 ` Iñaki Baz Castillo
2009-12-28 19:25 ` Eric Wong
2009-12-28 20:17 ` Iñaki Baz Castillo
2009-12-28 20:32 ` Eric Wong
2009-12-28 20:41 ` Iñaki Baz Castillo
2009-12-29 0:17 ` Eric Wong
2009-12-29 0:32 ` Iñaki Baz Castillo
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/unicorn/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200912241030.02160.ibc@aliax.net \
--to=ibc@aliax.net \
--cc=mongrel-unicorn@rubyforge.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/unicorn.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).