Problem with apachebench (ab) and chunked transfer encoding

I am using apachebench (ab) to test the web server

this problem is similar to this question .

is output from a single request here

:: ab -c 1 -n 1 -v 5 -k http://localhost:8082/typealine This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient)...INFO: POST header == --- GET /typealine HTTP/1.0 Connection: Keep-Alive Host: localhost:8082 User-Agent: ApacheBench/2.3 Accept: */* --- LOG: header received: HTTP/1.1 200 OK set-cookie: i=101203-012359.597-197269fc4;path=/;expires=Thu,31-Dec-2020 00:00:00 GMT; content-type: text/html;charset=utf-8 Transfer-Encoding: chunked Connection: Keep-Alive 205 <html><head><link href=/default.css rel=stylesheet><script src=/default.js></script></head><body onload=ui.onload()><form onsubmit=return(false)><center> <div style="text-align:center;border:1px dotted blue;padding:7px"><span id=__st> ڀ </span><input value="" title="s" id=_s name=_s type=text onkeypress="return ui._cr(event,this,'_ a')" size=32 onchange="this._changed=true"> <a id=_ href="javascript:ui.ax('_ a')"></a><script>document.getElementById('_s').focus();</script><br> <br> <span id=disp></span></div> 0 LOG: Response code = 200 ..done Server Software: Server Hostname: localhost Server Port: 8082 Document Path: /typealine Document Length: 0 bytes Concurrency Level: 1 Time taken for tests: 0.001 seconds Complete requests: 1 Failed requests: 0 Write errors: 0 Keep-Alive requests: 1 Total transferred: 721 bytes HTML transferred: 0 bytes Requests per second: 1312.34 [#/sec] (mean) Time per request: 0.762 [ms] (mean) Time per request: 0.762 [ms] (mean, across all concurrent requests) Transfer rate: 924.02 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 0 Processing: 1 1 0.0 1 1 Waiting: 0 0 0.0 0 0 Total: 1 1 0.0 1 1 

Here is an example output that doesn't work

  :: ab -c 1 -n 5 -v 5 -k http://localhost:8082/typealine This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient)...INFO: POST header == --- GET /typealine HTTP/1.0 Connection: Keep-Alive Host: localhost:8082 User-Agent: ApacheBench/2.3 Accept: */* --- LOG: header received: HTTP/1.1 200 OK set-cookie: i=101203-012711.490-1fdea5f58;path=/;expires=Thu,31-Dec-2020 00:00:00 GMT; content-type: text/html;charset=utf-8 Transfer-Encoding: chunked Connection: Keep-Alive 205 <html><head><link href=/default.css rel=stylesheet><script src=/default.js></script></head><body onload=ui.onload()><form onsubmit=return(false)><center> <div style="text-align:center;border:1px dotted blue;padding:7px"><span id=__st> ڀ </span><input value="" title="s" id=_s name=_s type=text onkeypress="return ui._cr(event,this,'_ a')" size=32 onchange="this._changed=true"> <a id=_ href="javascript:ui.ax('_ a')"></a><script>document.getElementById('_s').focus();</script><br> <br> <span id=disp></span></div> 0 LOG: Response code = 200 LOG: header received: HTTP/1.1 200 OK set-cookie: i=101203-012711.490-10b9564e5;path=/;expires=Thu,31-Dec-2020 00:00:00 GMT; content-type: text/html;charset=utf-8 Transfer-Encoding: chunked Connection: Keep-Alive LOG: Response code = 200 LOG: header received: 205 <html><head><link href=/default.css rel=stylesheet><script src=/default.js></script></head><body onload=ui.onload()><form onsubmit=return(false)><center> <div style="text-align:center;border:1px dotted blue;padding:7px"><span id=__st> ڀ </span><input value="" title="s" id=_s name=_s type=text onkeypress="return ui._cr(event,this,'_ a')" size=32 onchange="this._changed=true"> <a id=_ href="javascript:ui.ax('_ a')"></a><script>document.getElementById('_s').focus();</script><br> <br> <span id=disp></span></div> 0 WARNING: Response code not 2xx (500) apr_poll: The timeout specified has expired (70007) Total of 2 requests completed 

I really want to find the error on the web server or determine if the problem has ab

here is derived from a telnet session simulating ab

  :: telnet localhost 8082 Trying ::1... Connected to localhost.localdomain. Escape character is '^]'. GET /typealine HTTP/1.0 Connection: Keep-Alive Host: localhost:8082 User-Agent: ApacheBench/2.3 Accept: */* HTTP/1.1 200 OK set-cookie: i=101203-030537.389-1d3d8c1cb;path=/;expires=Thu,31-Dec-2020 00:00:00 GMT; content-type: text/html;charset=utf-8 Transfer-Encoding: chunked Connection: Keep-Alive 205 <html><head><link href=/default.css rel=stylesheet><script src=/default.js></script></head><body onload=ui.onload()><form onsubmit=return(false)><center> <div style="text-align:center;border:1px dotted blue;padding:7px"><span id=__st> ڀ </span><input value="" title="s" id=_s name=_s type=text onkeypress="return ui._cr(event,this,'_ a')" size=32 onchange="this._changed=true"> <a id=_ href="javascript:ui.ax('_ a')"></a><script>document.getElementById('_s').focus();</script><br> <br> <span id=disp></span></div> 0 GET /typealine HTTP/1.0 Connection: Keep-Alive Host: localhost:8082 User-Agent: ApacheBench/2.3 Accept: */* HTTP/1.1 200 OK set-cookie: i=101203-030539.162-1d8b8c256;path=/;expires=Thu,31-Dec-2020 00:00:00 GMT; content-type: text/html;charset=utf-8 Transfer-Encoding: chunked Connection: Keep-Alive 205 <html><head><link href=/default.css rel=stylesheet><script src=/default.js></script></head><body onload=ui.onload()><form onsubmit=return(false)><center> <div style="text-align:center;border:1px dotted blue;padding:7px"><span id=__st> ڀ </span><input value="" title="s" id=_s name=_s type=text onkeypress="return ui._cr(event,this,'_ a')" size=32 onchange="this._changed=true"> <a id=_ href="javascript:ui.ax('_ a')"></a><script>document.getElementById('_s').focus();</script><br> <br> <span id=disp></span></div> 0 GET /typealine HTTP/1.0 Connection: Keep-Alive Host: localhost:8082 User-Agent: ApacheBench/2.3 Accept: */* HTTP/1.1 200 OK set-cookie: i=101203-030541.086-18be1706b;path=/;expires=Thu,31-Dec-2020 00:00:00 GMT; content-type: text/html;charset=utf-8 Transfer-Encoding: chunked Connection: Keep-Alive 205 <html><head><link href=/default.css rel=stylesheet><script src=/default.js></script></head><body onload=ui.onload()><form onsubmit=return(false)><center> <div style="text-align:center;border:1px dotted blue;padding:7px"><span id=__st> ڀ </span><input value="" title="s" id=_s name=_s type=text onkeypress="return ui._cr(event,this,'_ a')" size=32 onchange="this._changed=true"> <a id=_ href="javascript:ui.ax('_ a')"></a><script>document.getElementById('_s').focus();</script><br> <br> <span id=disp></span></div> 0 
0
source share
2 answers

From this conclusion it is clear that after the headers of the second answer there is an additional CRLF, while ab would expect to see the length of the block.

0
source

So the problem is that the specification calls 0 CRLF CRLF as the final token of the encoded transmission. ab is violated because it needs 0 and CRLF.

+1
source

All Articles