truncated output with gzip, large files and slow rate

Maxim Dounin mdounin at mdounin.ru
Mon Apr 16 10:17:41 UTC 2012


Hello!

On Mon, Apr 16, 2012 at 09:37:27AM +0100, James Lee wrote:

> Hello,
> 
> nginx is truncating output with the following:
>  + gzip on
>  + compressed size greater than 100k (approx)
>  + client downloads at a slow rate
> 
> 
> *** Steps to reproduce ***
> 
> nginx.conf:
> 
> events {
> }
> http {
>     types {
>         text/plain txt;
>     }
>     gzip on;
>     gzip_types text/plain;
>     server {
>         listen 80 default_server;
>         server_name _;
>         root /path/to/root;
>     }
> }
> 
> 
> Create a test file that is larger than 100k compressed:
> 
> $ head -1000 /dev/random > /path/to/root/test.txt
> 
> 
> Request exhibiting failure:
> 
> $ curl -H "Accept-Encoding: gzip" --limit-rate 50k
> localhost/test.txt | gzcat | cksum
>   % Total    % Received % Xferd  Average Speed   Time    Time
> Time  Current
>                                  Dload  Upload   Total   Spent
> Left  Speed
> 100  180k    0  180k    0     0   2966      0 --:--:--  0:01:02
> --:--:--     0
> curl: (18) transfer closed with outstanding read data remaining
> 
> gzcat: stdin: unexpected end of file
> 649550918       184260
> 
> 
> and with wget:
> 
> $ wget --header "Accept-Encoding: gzip" --limit-rate=50k -O
> /dev/stdout localhost/test.txt | gzcat | cksum
> 
> --2012-04-15 11:27:04--  http://localhost/test.txt
> Resolving localhost (localhost)... 127.0.0.1, ::1
> Connecting to localhost (localhost)|127.0.0.1|:80... connected.
> HTTP request sent, awaiting response... 200 OK
> Length: unspecified [text/plain]
> Saving to: `/dev/stdout'
> 
>     [                                <=>     ] 184,330     --.-K/s   in 61s
> 
> 2012-04-15 11:28:06 (2.96 KB/s) - `/dev/stdout' saved [184330]
> 
> 
> gzcat: stdin: unexpected end of file
> 649550918       184260
> 
> 
> 
> 
> Some variants showing success (correct size and cksum) by avoiding
> one of compression or limit-rate:
> 
> $ curl -H "Accept-Encoding: gzip" localhost/test.txt | gzcat | cksum
>   % Total    % Received % Xferd  Average Speed   Time    Time
> Time  Current
>                                  Dload  Upload   Total   Spent
> Left  Speed
> 100  235k    0  235k    0     0  5970k      0 --:--:-- --:--:--
> --:--:-- 6370k
> 2871747365      241269
> 
> 
> $ curl --limit-rate 50k localhost/test.txt | cksum
>   % Total    % Received % Xferd  Average Speed   Time    Time
> Time  Current
>                                  Dload  Upload   Total   Spent
> Left  Speed
> 100  235k  100  235k    0     0  47700      0  0:00:05  0:00:05
> --:--:-- 55650
> 2871747365      241269
> 
> 
> 
> There are also failures with major web browsers including Firefox
> 11.0, MSIE 9.0 and Safari.
> 
> No error is reported by nginx.  The http return code and logged code
> is 200.  The only clue in the server is the sent size reported is
> smaller than the expected compressed size.
> 
> 
> 
> *** Other information ***
> 
> nginx 1.1.19
> Solaris 10 u10

Could you please provide debug log and nginx -V output?
See http://wiki.nginx.org/Debugging for details.

Maxim Dounin



More information about the nginx mailing list