From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: * X-Spam-ASN: AS14383 205.234.109.0/24 X-Spam-Status: No, score=1.0 required=3.0 tests=AWL,HK_RANDOM_FROM, MIME_QP_LONG_LINE,MSGID_FROM_MTA_HEADER shortcircuit=no autolearn=no version=3.3.2 Path: news.gmane.org!not-for-mail From: Eric Wong Newsgroups: gmane.comp.lang.ruby.rainbows.general Subject: Re: Zbatery/Rainbows keepalive problem? Date: Wed, 24 Nov 2010 14:14:02 -0800 Message-ID: <20101124221402.GA28625@dcvr.yhbt.net> References: <20101124211714.GA25256@dcvr.yhbt.net> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Trace: dough.gmane.org 1290637606 17699 80.91.229.12 (24 Nov 2010 22:26:46 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 24 Nov 2010 22:26:46 +0000 (UTC) To: Rainbows! list Original-X-From: rainbows-talk-bounces-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org Wed Nov 24 23:26:38 2010 Return-path: Envelope-to: gclrrg-rainbows-talk@m.gmane.org X-Original-To: rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org Delivered-To: rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-BeenThere: rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: rainbows-talk-bounces-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org Errors-To: rainbows-talk-bounces-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org Xref: news.gmane.org gmane.comp.lang.ruby.rainbows.general:150 Archived-At: Received: from rubyforge.org ([205.234.109.19]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1PLNnN-0005hs-Hs for gclrrg-rainbows-talk@m.gmane.org; Wed, 24 Nov 2010 23:26:33 +0100 Received: from rubyforge.org (rubyforge.org [127.0.0.1]) by rubyforge.org (Postfix) with ESMTP id A66AA167831A; Wed, 24 Nov 2010 17:26:30 -0500 (EST) Received: from dcvr.yhbt.net (dcvr.yhbt.net [64.71.152.64]) by rubyforge.org (Postfix) with ESMTP id EBDAD167831A for ; Wed, 24 Nov 2010 17:14:02 -0500 (EST) Received: from localhost (unknown [127.0.2.5]) by dcvr.yhbt.net (Postfix) with ESMTP id 674631F7E9; Wed, 24 Nov 2010 22:14:02 +0000 (UTC) Jake Douglas wrote: > On Wed, Nov 24, 2010 at 1:17 PM, Eric Wong wrote: > > Jake Douglas wrote: > >> I am using zbatery with ThreadPool and just upgraded to 0.5.0, which > >> subsequently upgraded rainbows to 2.0.0 and unicorn to 3.0.0. My > >> browser(s) now hangs for a while during each request. I noticed some > > > > Are you setting a Content-Length or Transfer-Encoding in your app? > > > > You can add Rack::Chunked and Rack::ContentLength middlewares to your > > config (some frameworks like Rails already do this, I think). > > > > Which versions of Zbatery/Rainbows!/Unicorn were you using before which > > exhibited this? =A0Rainbows!/Zbatery has supported keepalive for some t= ime > > and none of the three servers ever included > > Rack::Chunked/Rack::ContentLength in its middleware stack by default. > > I was using zbatery 0.4.0, Unicorn 2.0.1, unsure of the rainbows > version. This is a Rails 3.0.3 app and I am not setting any headers > myself. Are you saying that Rails is doing something that is causing > the problem? Please bear with me, as I am not familiar with the > details of how keep alive works. Responses without keepalive don't need additional headers since the server just closes the connection to notify the client. HTTP/1.1 with keepalive requires a Content-Length (or Transfer-Encoding: chunked) header to determine response boundaries, otherwise clients would never know when one response ends and another begins. The normal Rails "render" path already seems[1] to add Content-Length; are you doing something else to send responses from Rails? Including the Rack::Chunked/Rack::ContentLength middlewares (at the top of the middleware stack) should solve all your problems. If you only serve HTTP/1.1, you can probably get away with only Rack::Chunked... [1] - I haven't had a chance to test this myself -- = Eric Wong _______________________________________________ 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