проблема с apachebench (ab) и фрагментированием передачи-кодирования

я использую apachebench (ab) для тестирования веб-сервера

эта проблема похожа на этот вопрос.

вот вывод из одного запроса

 :: 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

вот пример вывода, который терпит неудачу

 :: 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

я очень хочу найти ошибку в веб-сервере или определить, есть ли проблема у ab

вот вывод из сеанса telnet, имитирующего 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

person user529327    schedule 03.12.2010    source источник
comment
За запросом клиента (состоящим в данном случае из строки запроса и только одного заголовка) следует пустая строка, так что запрос заканчивается двойным символом новой строки, каждый из которых представляет собой возврат каретки, за которым следует перевод строки. ... сервер сделал два перевода строки ...   -  person user529327    schedule 04.12.2010


Ответы (2)


Из этого вывода видно, что после заголовков второго ответа есть дополнительный CRLF, тогда как ab ожидает увидеть длину фрагмента.

person SimonJ    schedule 03.12.2010
comment
я нашел некоторые ошибки с указателем, указанным в ответе, но основная проблема остается. я сделал новый пост с данными tcpdump: | - person user529327; 04.12.2010

Итак, проблема в том, что спецификация требует 0 CRLF CRLF в качестве конечного маркера фрагментированного кодирования передачи. ab не работает, потому что хочет 0 и CRLF.

person bond    schedule 16.11.2015