From c28e2610cfc70e89a0ffabe18356d148afe98bfc Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 31 Jan 2011 15:51:30 -0800 Subject: enable TCP_NOPUSH/TCP_CORK by default It's actually harmless since Unicorn only supports "fast" applications that do not trickle, and we don't do keepalive so we'll always flush-on-close. This should reduce wakeups on the nginx proxy server if nginx is over TCP. Mongrel 1.x had TCP_CORK enabled by default, too. --- lib/unicorn/configurator.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'lib/unicorn/configurator.rb') diff --git a/lib/unicorn/configurator.rb b/lib/unicorn/configurator.rb index 1aea3cd..9aa84f1 100644 --- a/lib/unicorn/configurator.rb +++ b/lib/unicorn/configurator.rb @@ -247,13 +247,13 @@ class Unicorn::Configurator # # Default: operating system defaults (usually Nagle's algorithm enabled) # - # +:tcp_nopush+: enables TCP_CORK in Linux or TCP_NOPUSH in FreeBSD + # +:tcp_nopush+: enables/disables TCP_CORK in Linux or TCP_NOPUSH in FreeBSD # - # This will prevent partial TCP frames from being sent out. - # Enabling +tcp_nopush+ is generally not needed or recommended as - # controlling +tcp_nodelay+ already provides sufficient latency - # reduction whereas Unicorn does not know when the best times are - # for flushing corked sockets. + # This is enabled by default as of Unicorn 3.4. This prevents partial + # TCP frames from being sent out and reduces wakeups in nginx if it is + # on a different machine. Since Unicorn is only designed for applications + # that send the response body quickly without keepalive, sockets will + # always be flushed on close to prevent delays. # # This has no effect on UNIX sockets. # -- cgit v1.2.3-24-ge0c7