From: Eric Wong <normalperson@yhbt.net>
To: unicorn list <mongrel-unicorn@rubyforge.org>
Subject: [RFC/PATCH] check_client_connection: document local-only requirement
Date: Thu, 29 Nov 2012 21:55:42 +0000 [thread overview]
Message-ID: <20121129215542.GA6392@dcvr.yhbt.net> (raw)
In-Reply-To: <20121129211957.GA31873@dcvr.yhbt.net>
In my testing, only dropped clients over Unix domain sockets or
loopback TCP were detected with this option. Since many
nginx+unicorn combinations run on the same host, this is not a
problem.
Furthermore, tcp_nodelay:true appears to work over loopback,
so remove the requirement for tcp_nodelay:false.
---
Eric Wong <normalperson@yhbt.net> wrote:
> Tom Burns <tom.burns@jadedpixel.com> wrote:
> > + if set[:check_client_connection]
> > + set[:listeners].each do |address|
> > + if set[:listener_opts][address][:tcp_nopush] == true
> > + raise ArgumentError,
> > + "check_client_connection is incompatible with tcp_nopush:true"
> > + end
>
> Btw, were you using:
>
> 1) TCP over loopback (bound to 0.0.0.0, client comes from 127.0.0.1)
> 2) TCP over a LAN (separate client/server hosts)
> 3) Unix domain socket
>
> I wonder if we can drop the below hunk for checking :tcp_nodelay,
> and document that check_client_connection requires the client to
> either be from a Unix domain socket or TCP loopback to work.
>
> > + if set[:listener_opts][address][:tcp_nodelay] == true
> > + raise ArgumentError,
> > + "check_client_connection is incompatible with tcp_nodelay:true"
> > + end
>
> I couldn't get 2) to work with either value of tcp_nodelay. My small
> LAN at home only has ~0.100ms latency.
>
> Happily, with TCP over loopback (on Linux 3.6), either value of
> tcp_nodelay works, so the tcp_nodelay check seems unnecessary after
> all.
lib/unicorn/configurator.rb | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/lib/unicorn/configurator.rb b/lib/unicorn/configurator.rb
index 9752cdd..7651093 100644
--- a/lib/unicorn/configurator.rb
+++ b/lib/unicorn/configurator.rb
@@ -103,10 +103,6 @@ class Unicorn::Configurator
raise ArgumentError,
"check_client_connection is incompatible with tcp_nopush:true"
end
- if set[:listener_opts][address][:tcp_nodelay] == true
- raise ArgumentError,
- "check_client_connection is incompatible with tcp_nodelay:true"
- end
end
end
set.each do |key, value|
@@ -473,8 +469,11 @@ class Unicorn::Configurator
# This will prevent calling the application for clients who have
# disconnected while their connection was queued.
#
- # This option cannot be used in conjunction with tcp_nodelay or
- # tcp_nopush.
+ # This only affects clients connecting over Unix domain sockets
+ # and TCP via loopback (127.*.*.*). It is unlikely to detect
+ # disconnects if the client is on a remote host (even on a fast LAN).
+ #
+ # This option cannot be used in conjunction with :tcp_nopush.
def check_client_connection(bool)
set_bool(:check_client_connection, bool)
end
--
1.8.0.3.gdd57fab.dirty
_______________________________________________
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:[~2012-11-29 21:55 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-29 17:44 Combating nginx 499 HTTP responses during flash traffic scenario Tom Burns
2012-10-29 18:45 ` Eric Wong
2012-10-29 19:27 ` Hongli Lai
2012-10-29 19:41 ` Eric Wong
2012-10-29 21:06 ` Hongli Lai
2012-10-29 21:53 ` Eric Wong
2012-10-29 22:21 ` Tom Burns
2012-10-30 20:40 ` Tom Burns
2012-10-30 21:37 ` Eric Wong
2012-11-02 17:59 ` Tom Burns
2012-11-02 19:38 ` Eric Wong
2012-11-03 22:45 ` Tom Burns
2012-11-05 11:48 ` Eric Wong
2012-11-06 3:16 ` Tom Burns
2012-11-06 21:23 ` Eric Wong
2012-11-29 15:52 ` Tom Burns
2012-11-29 20:30 ` Lawrence Pit
2012-11-29 20:57 ` Tom Burns
2012-11-29 21:30 ` Eric Wong
2012-11-30 23:47 ` Eric Wong
2012-11-29 20:41 ` Eric Wong
2012-12-04 3:00 ` Eric Wong
2012-11-29 21:19 ` Eric Wong
2012-11-29 21:55 ` Eric Wong [this message]
2012-11-29 23:47 ` [RFC/PATCH] check_client_connection: document local-only requirement Tom Burns
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=20121129215542.GA6392@dcvr.yhbt.net \
--to=normalperson@yhbt.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).