Return-Path: Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: (qmail 60725 invoked from network); 20 Aug 2009 22:52:14 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 20 Aug 2009 22:52:14 -0000 Received: (qmail 51283 invoked by uid 500); 20 Aug 2009 22:52:32 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 51202 invoked by uid 500); 20 Aug 2009 22:52:32 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 51193 invoked by uid 99); 20 Aug 2009 22:52:32 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 20 Aug 2009 22:52:32 +0000 X-ASF-Spam-Status: No, hits=1.2 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [208.113.200.5] (HELO spaceymail-a1.g.dreamhost.com) (208.113.200.5) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 20 Aug 2009 22:52:22 +0000 Received: from [10.2.8.78] (wsip-70-183-62-251.oc.oc.cox.net [70.183.62.251]) by spaceymail-a1.g.dreamhost.com (Postfix) with ESMTP id 2A61A8079C for ; Thu, 20 Aug 2009 15:52:02 -0700 (PDT) Mime-Version: 1.0 (Apple Message framework v753.1) In-Reply-To: <3ad3168b0908200201s39365d97h25ad1ed7d22dbf4a@mail.gmail.com> References: <3ad3168b0908190953u599afdd8gc47d932e364256b4@mail.gmail.com> <3ad3168b0908200201s39365d97h25ad1ed7d22dbf4a@mail.gmail.com> Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: Content-Transfer-Encoding: 7bit From: "Roy T. Fielding" Subject: Re: mod_ssl and Transfer-Encoding: chunked wastes ~58 bytes per chunk. Date: Thu, 20 Aug 2009 15:52:08 -0700 To: dev@httpd.apache.org X-Mailer: Apple Mail (2.753.1) X-Virus-Checked: Checked by ClamAV on apache.org On Aug 20, 2009, at 2:01 AM, Alex Stapleton wrote: > 2009/8/19 Roy T. Fielding : >> On Aug 19, 2009, at 9:53 AM, Alex Stapleton wrote: >> >>> (This has been cross posted to users@. I apologise if this mail >>> isn't >>> relevant to the dev list.) >>> >>> First some background. We use Apache HTTPD 2.0 over a high-latency, >>> high packet loss GPRS WAN. The cost per byte is tangible. We use >>> SSL. >>> We also use Transfer-Encoding: chunked sometimes. This is a machine >>> monitoring application. We are using iframe streaming to push real >>> time data to operators browsers. >>> >>> I have noticed after much faffing around with wireshark that httpd >>> will transmit 3 Application Data fragments for each chunk in a >>> chunked >>> HTTP stream. The fragments are the HTTP chunk size, the chunk data, >>> and then a CRLF. All fragments in an SSL session are rounded to the >>> length of the ciphers block size. This results in the 4+2 bytes for >>> the chunk frame ending up being 64 bytes of data over TCP. A >>> waste of >>> 58 bytes per chunk in this case. >> >> That's odd -- we don't do this with non-SSL writes (last I checked). >> Perhaps we are relying on a TCP cork for the non-SSL case? >> What is your operating system and platform? > > I initially discovered this issue on a fairly old Ubuntu 6 machine > running httpd 2.0.55-4ubuntu4.1. I have since recreated it on my OS X > 10.5 iMac using httpd 2.0.64 from MacPorts. I suppose I should also > point out that I am using PHP 5.2.9 to generate the chunked data. If > there's a way of doing chunked output using "plain" Apache let me know > and I can test that too if needed. Er, have you tested it with 2.2.x? The likelihood of us making any non-security changes to the 2.0.x branch is extremely small. Apache does chunked output by default if no content-length is provided and the client says it is HTTP/1.1. ....Roy