haproxy/src
Willy Tarreau def0d22cc5 MINOR: stream: make option contstats usable again
Quite a lot of people have been complaining about option contstats not
working correctly anymore since about 1.4. The reason was that one reason
for the significant performance boost between 1.3 and 1.4 was the ability
to forward data between a server and a client without waking up the stream
manager. And we couldn't afford to force sessions to constantly wake it
up given that most of the people interested in contstats are also those
interested in high performance transmission.

An idea was experimented with in the past, consisting in limiting the
amount of transmissible data before waking it up, but it was not usable
on slow connections (eg: FTP over modem lines, RDP, SSH) as stats would
be updated too rarely if at all, so that idea was dropped.

During a discussion today another idea came up : ensure that stats are
updated once in a while, since it's the only thing that matters. It
happens that we have the request channel's analyse_exp timeout that is
used to wake the stream up after a configured delay, and that by
definition this timeout is not used when there's no more analyser
(otherwise the stream would wake up and the stats would be updated).

Thus here the idea is to reuse this timeout when there's no analyser
and set it to now+5 seconds so that a stream wakes up at least once
every 5 seconds to update its stats. It should be short enough to
provide smooth traffic graphs and to allow to debug outputs of "show
sess" more easily without inflicting too much load even for very large
number of concurrent connections.

This patch is simple enough and safe enough to be backportable to 1.6
if there is some demand.
2016-11-08 22:03:00 +01:00
..
51d.c BUILD/MAJOR:updated 51d Trie implementation to incorperate latest update to 51Degrees.c 2016-08-24 20:29:31 +02:00
acl.c MINOR: acl: Add predefined METH_DELETE, METH_PUT 2016-04-12 11:44:09 +02:00
applet.c MINOR: stream-int: rename si_applet_done() to si_applet_wake_cb() 2015-09-25 21:16:02 +02:00
arg.c MINOR: sample: Moves ARGS underlying type from 32 to 64 bits. 2016-03-15 22:11:52 +01:00
auth.c MINOR: samples: rename union from "data" to "u" 2015-08-20 17:13:46 +02:00
backend.c MINOR: server: do not emit warnings/logs/alerts on server state changes at boot 2016-11-07 14:31:45 +01:00
base64.c
buffer.c BUG/MEDIUM: buffers: do not round up buffer size during allocation 2016-01-25 02:31:18 +01:00
cfgparse.c BUG/MEDIUM: servers: properly propagate the maintenance states during startup 2016-11-07 14:31:52 +01:00
channel.c BUG/MEDIUM: channel: fix inconsistent handling of 4GB-1 transfers 2016-05-04 15:26:37 +02:00
checks.c MAJOR: check: find out which port to use for health check at run time 2016-09-11 08:12:13 +02:00
chunk.c CLEANUP: fixed some usages of realloc leading to memory leak 2016-06-29 10:45:18 +02:00
compression.c BUILD: compression: remove a warning when no compression lib is used 2016-08-10 21:17:06 +02:00
connection.c CLEANUP: connection: using internal struct to hold source and dest port. 2016-07-05 14:43:05 +02:00
da.c MINOR: da: Using ARG12 macro for the sample fetch and the convertor. 2016-03-17 05:44:33 +01:00
dns.c BUG/MEDIUM: dns: don't randomly crash on out-of-memory 2016-10-01 09:23:04 +02:00
dumpstats.c MINOR: stats: Escape equals sign on socket dump 2016-10-25 22:15:22 +02:00
ev_epoll.c
ev_kqueue.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00
ev_poll.c BUILD: poll: remove unused hap_fd_isset() which causes a warning with clang 2016-08-10 21:23:48 +02:00
ev_select.c
fd.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00
filters.c BUG/MEDIUM: filters: Fix data filtering when data are modified 2016-06-21 18:53:08 +02:00
flt_http_comp.c OPTIM: http: move all http character classs tables into a single one 2016-11-05 15:58:08 +01:00
flt_trace.c MEDIUM: filters: Add pre and post analyzer callbacks 2016-05-18 15:11:54 +02:00
freq_ctr.c
frontend.c MINOR: Add fe_req_rate sample fetch 2016-10-03 16:08:09 +02:00
haproxy-systemd-wrapper.c BUG/MEDIUM: systemd-wrapper: return correct exit codes 2016-11-03 20:34:20 +01:00
haproxy.c CLEANUP: wurfl: reduce exposure in the rest of the code 2016-11-08 18:47:25 +01:00
hash.c
hdr_idx.c
hlua_fcn.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00
hlua.c BUG/MEDIUM: lua: somme HTTP manipulation functions are called without valid requests 2016-08-03 00:06:13 +02:00
i386-linux-vsys.c
lb_chash.c MEDIUM: server: Implement bounded-load hash algorithm 2016-10-25 20:21:32 +02:00
lb_fas.c
lb_fwlc.c
lb_fwrr.c
lb_map.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00
listener.c MINOR: listener: add the "accept-netscaler-cip" option to the "bind" keyword 2016-06-20 23:02:47 +02:00
log.c MEDIUM: log: Decompose %Tq in %Th %Ti %TR 2016-08-23 15:18:08 +02:00
lru.c MINOR: lru: new function to delete <nb> least recently used keys 2016-01-11 07:31:35 +01:00
mailers.c
map.c CLEANUP: map: Avoid memory leak in out-of-memory condition. 2016-03-08 12:55:06 +01:00
memory.c MEDIUM: pools: add a new flag to avoid rounding pool size up 2016-01-25 02:31:18 +01:00
namespace.c CLEANUP: uniformize last argument of malloc/calloc 2016-04-03 14:17:42 +02:00
pattern.c BUG/MINOR: pattern: Avoid memory leak on out-of-memory condition 2016-03-13 07:47:25 +01:00
payload.c BUG/MINOR: payload: fix SSLv2 version parser 2016-08-30 14:47:57 +02:00
peers.c MINOR: peers: remove the pointer to the stream 2016-10-31 20:07:01 +01:00
pipe.c
proto_http.c OPTIM: http: optimize lookup of comma and quote in header values 2016-11-05 18:23:38 +01:00
proto_tcp.c MEDIUM: tcp: add registration and processing of TCP L5 rules 2016-10-21 18:19:24 +02:00
proto_udp.c CLEANUP: fix inconsistency between fd->iocb, proto->accept and accept() 2016-04-14 11:18:22 +02:00
proto_uxst.c MINOR: unix: don't mention free ports on EAGAIN 2016-01-26 21:11:51 +01:00
protocol.c BUILD: protocol: fix some build errors on OpenBSD 2016-08-10 19:31:58 +02:00
proxy.c MEDIUM: tcp: add registration and processing of TCP L5 rules 2016-10-21 18:19:24 +02:00
queue.c MINOR: proxy: add 'served' field to proxy, equal to total of all servers' 2016-10-25 20:21:32 +02:00
raw_sock.c
rbtree.c
regex.c CLEANUP: uniformize last argument of malloc/calloc 2016-04-03 14:17:42 +02:00
sample.c OPTIM: http: move all http character classs tables into a single one 2016-11-05 15:58:08 +01:00
server.c BUG/MEDIUM: servers: properly propagate the maintenance states during startup 2016-11-07 14:31:52 +01:00
session.c MEDIUM: tcp: add registration and processing of TCP L5 rules 2016-10-21 18:19:24 +02:00
shctx.c MEDIUM: ssl: Add support for OpenSSL 1.1.0 2016-11-08 20:54:41 +01:00
signal.c MEDIUM: unblock signals on startup. 2016-04-20 10:53:12 +02:00
ssl_sock.c MEDIUM: ssl: Add support for OpenSSL 1.1.0 2016-11-08 20:54:41 +01:00
standard.c CLEANUP: tools: make ipcpy() preserve the original port 2016-11-05 13:56:04 +01:00
stick_table.c MEDIUM: tcp: add registration and processing of TCP L5 rules 2016-10-21 18:19:24 +02:00
stream_interface.c BUG/MEDIUM: stream-int: avoid double-call to applet->release 2015-09-25 21:16:03 +02:00
stream.c MINOR: stream: make option contstats usable again 2016-11-08 22:03:00 +01:00
task.c
time.c
trace.c BUG/MEDIUM: trace.c: rdtsc() is defined in two files 2016-04-09 22:27:01 +02:00
uri_auth.c CLEANUP: uniformize last argument of malloc/calloc 2016-04-03 14:17:42 +02:00
vars.c MEDIUM: tcp: add registration and processing of TCP L5 rules 2016-10-21 18:19:24 +02:00
wurfl.c CLEANUP: wurfl: reduce exposure in the rest of the code 2016-11-08 18:47:25 +01:00
xxhash.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00