diff options
author | Eric Wong <normalperson@yhbt.net> | 2011-01-05 16:19:17 -0800 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2011-01-05 16:22:30 -0800 |
commit | 4060b7742d047c0000fd1bf4ac2c3b9cae95585a (patch) | |
tree | a08bcf85730b69abdaf91c3e1fb7edc28fa264ef | |
parent | 9b6679ec50ecd184fccd195bd14bda3c6ea2070f (diff) | |
download | rainbows-4060b7742d047c0000fd1bf4ac2c3b9cae95585a.tar.gz |
Nagle's algorithm is harmful with the write-write-read sequence during keepalive, so we disable it performance for users using keepalive. We always write headers with a separate write because Rack response bodies may not always be ready for writing when headers are. This requires Unicorn 3.3.0
-rw-r--r-- | lib/rainbows.rb | 11 | ||||
-rwxr-xr-x | t/t0040-keepalive_requests-setting.sh | 5 |
2 files changed, 9 insertions, 7 deletions
diff --git a/lib/rainbows.rb b/lib/rainbows.rb index 3f9058e..a8bfa78 100644 --- a/lib/rainbows.rb +++ b/lib/rainbows.rb @@ -1,8 +1,15 @@ # -*- encoding: binary -*- require 'kgio' require 'unicorn' -# the value passed to TCP_DEFER_ACCEPT actually matters in Linux 2.6.32+ -Unicorn::SocketHelper::DEFAULTS[:tcp_defer_accept] = 60 +Unicorn::SocketHelper::DEFAULTS.merge!({ + # the value passed to TCP_DEFER_ACCEPT actually matters in Linux 2.6.32+ + :tcp_defer_accept => 60, + + # keep-alive performance sucks without this due to + # write(headers)-write(body)-read + # because we always write headers and bodies with two calls + :tcp_nodelay => true, +}) module Rainbows diff --git a/t/t0040-keepalive_requests-setting.sh b/t/t0040-keepalive_requests-setting.sh index aee6cd3..81194f1 100755 --- a/t/t0040-keepalive_requests-setting.sh +++ b/t/t0040-keepalive_requests-setting.sh @@ -6,11 +6,6 @@ t_begin "setup and start" && { rainbows_setup $model 50 666 rtmpfiles curl_out curl_err grep 'keepalive_timeout 666' $unicorn_config - ed -s $unicorn_config <<EOF -,s/listen.*/&, :tcp_nodelay => true/ -w -EOF - grep nodelay $unicorn_config rainbows -E none -D env.ru -c $unicorn_config rainbows_wait_start } |