[httperf] Httperf client timeout while making progress
Chris Wilson
chris at aidworld.org
Fri Nov 24 01:01:51 PST 2006
Hi all,
First of all, thanks for writing httperf! It looks like an excellent tool
and most suitable for the kind of network performance tests and debugging
that I'm currently doing (fixing university networks in Kenya).
However, I think I've discovered a discrepancy between httperf's behaviour
and the documentation. The man page says of the option --timeout:
Specifies the amount of time X that httperf is willing to wait
for a server reaction. [...] This timeout value is used when
establishing a TCP connection, when sending a request, when waiting for
a reply, and when receiving a reply. If during any of those activities
a request fails to make forward progress within the alloted time,
httperf considers the request to have died, closes the associated
connection or session and increases the client-timo error count.
Now that makes perfect sense to me, and mirrors the way that I think a
browser would work. My definition of "making forward progress while
receiving a reply" is that packets continue to be received. So as long as
the delay between packets (or TCP data delivery) does not exceed the
timeout, httperf will not give up on the connection.
However, I think that I have observed httperf behaving differently.
Specifically, it seems to apply the --timeout to receiving the entire
response. Therefore, if I specify a reasonable timeout of 30 seconds, and
download a large page over a slow connection, httperf reports a timeout
error, even though a browser would not.
I've attached a pcap file and httperf debug log (level 3) as an example.
If there is any choice over this behaviour, I would like to configure
httperf to behave the way that I described above, i.e. not to time out the
connection as long as it continues to receive packets.
Thanks in advance for your help!
Cheers, Chris.
--
(aidworld) chris wilson | chief engineer (http://www.aidworld.org)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cnn-3.pcap
Type: application/octet-stream
Size: 4280 bytes
Desc:
Url : http://napali.hpl.hp.com/pipermail/httperf/attachments/20061124/22e59b99/cnn-3.obj
-------------- next part --------------
root at utalii(root)$ httperf --hog --timeout=30 --server=www.cnn.com --port=80 --uri=/ --http-version=1.0 --num-conns=1 --debug 3
httperf --hog --timeout=30 --client=0/1 --server=www.cnn.com --port=80 --uri=/ --http-version=1.0 --send-buffer=4096 --recv-buffer=16384 --num-conns=1 --num-calls=1
httperf: warning: open file limit > FD_SETSIZE; limiting max. # of open files to FD_SETSIZE
event_signal: EV_HOSTNAME_LOOKUP_START (obj=0x0,arg=bfbfed9c)
event_signal: EV_HOSTNAME_LOOKUP_STOP (obj=0x0,arg=bfbfed9c)
timer_schedule: t=0x80d1120, delay=5s, arg=0
event_signal: EV_CONN_NEW (obj=0x80d6800,arg=0)
event_signal: EV_CONN_CONNECTING (obj=0x80d6800,arg=0)
timer_schedule: t=0x80d1140, delay=30s, arg=80d6800
timer_cancel: t=0x80d1140
event_signal: EV_CONN_CONNECTED (obj=0x80d6800,arg=0)
event_signal: EV_CALL_NEW (obj=0x80dc100,arg=0)
event_signal: EV_CALL_ISSUE (obj=0x80dc100,arg=0)
event_signal: EV_CALL_SEND_START (obj=0x80dc100,arg=0)
timer_schedule: t=0x80d1140, delay=30s, arg=80d6800
timer_cancel: t=0x80d1140
event_signal: EV_CALL_SEND_RAW_DATA (obj=0x80dc100,arg=0)
do_send.0: wrote 62 bytes on 0x80d6800
event_signal: EV_CALL_SEND_STOP (obj=0x80dc100,arg=0)
timer_schedule: t=0x80d1140, delay=30s, arg=80d6800
event_signal: EV_PERF_SAMPLE (obj=0x0,arg=b89332db)
timer_schedule: t=0x80d1160, delay=5s, arg=0
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
parse_status_line.0: reply is HTTP/1.1, status = 200
event_signal: EV_CALL_RECV_START (obj=0x80dc100,arg=c8)
event_signal: EV_CALL_RECV_HDR (obj=0x80dc100,arg=80d684c)
event_signal: EV_CALL_RECV_HDR (obj=0x80dc100,arg=80d684c)
event_signal: EV_CALL_RECV_HDR (obj=0x80dc100,arg=80d684c)
event_signal: EV_CALL_RECV_HDR (obj=0x80dc100,arg=80d684c)
event_signal: EV_CALL_RECV_HDR (obj=0x80dc100,arg=80d684c)
event_signal: EV_CALL_RECV_HDR (obj=0x80dc100,arg=80d684c)
event_signal: EV_CALL_RECV_HDR (obj=0x80dc100,arg=80d684c)
event_signal: EV_CALL_RECV_HDR (obj=0x80dc100,arg=80d684c)
timer_schedule: t=0x80d1140, delay=24.8235s, arg=80d6800
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=24.7287s, arg=80d6800
event_signal: EV_PERF_SAMPLE (obj=0x0,arg=c7d900d)
timer_schedule: t=0x80d1120, delay=5s, arg=0
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=20.036s, arg=80d6800
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=19.6252s, arg=80d6800
event_signal: EV_PERF_SAMPLE (obj=0x0,arg=16c4e9bd)
timer_schedule: t=0x80d1160, delay=5s, arg=0
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=14.1929s, arg=80d6800
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=13.7474s, arg=80d6800
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=13.217s, arg=80d6800
event_signal: EV_PERF_SAMPLE (obj=0x0,arg=68a0774f)
timer_schedule: t=0x80d1120, delay=5s, arg=0
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=9.39508s, arg=80d6800
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=8.65049s, arg=80d6800
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=7.93852s, arg=80d6800
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=7.06708s, arg=80d6800
event_signal: EV_PERF_SAMPLE (obj=0x0,arg=53ca6a65)
timer_schedule: t=0x80d1160, delay=5.00004s, arg=0
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=4.56339s, arg=80d6800
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=3.5021s, arg=80d6800
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=1.94623s, arg=80d6800
event_signal: EV_PERF_SAMPLE (obj=0x0,arg=1cb0931)
timer_schedule: t=0x80d1120, delay=5.00008s, arg=0
timer_cancel: t=0x80d1140
event_signal: EV_CALL_RECV_RAW_DATA (obj=0x80dc100,arg=bfbfc5b0)
event_signal: EV_CALL_RECV_DATA (obj=0x80dc100,arg=bfbfc580)
timer_schedule: t=0x80d1140, delay=0.433076s, arg=80d6800
connection_timeout.0: t=0x80d1140, connection=0x80d6800
event_signal: EV_CONN_TIMEOUT (obj=0x80d6800,arg=0)
event_signal: EV_CALL_DESTROYED (obj=0x80dc100,arg=0)
event_signal: EV_CONN_CLOSE (obj=0x80d6800,arg=0)
event_signal: EV_CONN_DESTROYED (obj=0x80d6800,arg=0)
Maximum connect burst length: 0
Total: connections 1 requests 1 replies 0 test-duration 30.682 s
Connection rate: 0.0 conn/s (30682.3 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 0.0 avg 0.0 max 0.0 median 0.0 stddev 0.0
Connection time [ms]: connect 681.3
Connection length [replies/conn]: 0.000
Request rate: 0.0 req/s (30682.3 ms/req)
Request size [B]: 62.0
Reply rate [replies/s]: min 0.0 avg 0.0 max 0.0 stddev 0.0 (6 samples)
Reply time [ms]: response 5177.0 transfer 0.0
Reply size [B]: header 0.0 content 0.0 footer 0.0 (total 0.0)
Reply status: 1xx=0 2xx=0 3xx=0 4xx=0 5xx=0
CPU time [s]: user 3.16 system 25.46 (user 10.3% system 83.0% total 93.3%)
Net I/O: 0.0 KB/s (0.0*10^6 bps)
Errors: total 1 client-timo 1 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0
More information about the httperf
mailing list