Awesome Willy!
Il giorno 16/dic/2013, alle ore 03:41, Willy Tarreau <[email protected]> ha scritto:

> Hi all,
> 
> here is probably the largest update we ever had, it's composed of 345
> patches!
> 
> Some very difficult changes had to be made and as usual when such changes
> happen, they take a lot of time due to the multiple attempts at getting
> them right, and as time goes, people submit features :-)
> 
> After two weeks spent doing only fixes, I thought it was time to issue dev20.
> I'm sure I'll forget a large number of things, but the main features of this
> version include the following points (in merge order) :
> 
>  - optimizations (splicing, polling, etc...) : a few percent CPU could be
>    saved ;
> 
>  - memory : the connections and applets are now allocated only when needed.
>    Additionally, some structures were reorganized to avoid fragmentation on
>    64-bit systems. In practice, an idle session size has dropped from 1936
>    bytes to 1296 bytes (-640 bytes, or -33%).
> 
>  - samples : all sample fetch expressions now support a comma-delimited
>    list of converters. This is also true in ACLs, so that it becomes
>    possible to do things like :
> 
>        # convert to lower case and use fast tree indexing
>        acl known_domain hdr(host),lower -f huge-domain-list.lst
> 
>  - a lot of code has been deduplicated in the tracked counters, it's now
>    possible to use sc_foo_bar(1, args) instead of sc1_foo_bar(args). Doing
>    so has simplified the code and makes life of APIs easier.
> 
>  - it's now possible to look up a tracked key from another table. This allows
>    to retrieve multiple counters for the same key.
> 
>  - several hash algorithms are provided, and it is possible to select them
>    per backend. This high quality work was done at Tumblr by Bhaskar Maddala.
> 
>  - agent-checks: this new feature was merged and replaced the lb-agent-chk.
>    Some changes are still planned but feedback is welcome. The goal of this
>    agent is to retrieve soem weight information from a server independantly
>    of the service health. A typical usage would consist in reporting the
>    server's idle percentage as an estimate of the possible weight. This work
>    was done by Simon Horman for Loadbalancer.org.
> 
>  - samples : more automatic conversions between types are supported, making
>    it easier to stick to any parameter. The types are much more dynamic now.
>    Some improvements are still pending. This work was done by Thierry Fournier
>    at Exceliance.
> 
>  - map : a new type of converter appeared : maps. A map matches a key from
>    a file just like ACLs do, and replaces this value with the value associated
>    with the key on the same line of the file. As it is a converter, it can be
>    used in any sample expression. The first usage consists in geolocation,
>    where networks are associated with country codes. Maps may be consulted,
>    deleted, updated and filled from the CLI. Some will probably use this to
>    program actions or emulate ACLs without even reloading a config. This
>    work was also achieved by Thierry Fournier, and reviewed by Cyril Bonté
>    who developped the original Geoip patchset for 1.4 and 1.5.
> 
>  - http-request redirect now supports log-format like expressions, just like
>    http-request add-header. This allows to emit strings extracted from the
>    request (host header, country code from a map, ...). Thierry again here.
> 
>  - checks: tcp-check supports send/expect sequences with strings/regex/binary.
>    Thus it now becomes possible to check unsupported protocols, even binary.
>    This work is from Baptiste Assmann.
> 
>  - keep-alive: the dynamic allocation of the connection and applet in the
>    session now allows to reuse or kill a connection that was previously
>    associated with the session. Thus we now have a very basic support for
>    keep-alive to the servers. There is even an option to relax the load
>    balancing to try to keep the same connection. Right now we don't do
>    any connection sharing so the main use is for static servers and for
>    far remote servers or those which require the broken NTLM auth. That
>    said, the performance tests I have run show an increase from 71000
>    connections per second to 150000 keep-alive requests per second running
>    on one core of a Xeon E5 3.6 GHz. This doubled to 300k requests per
>    second with two cores. I didn't test above, I lacked injection tools :-)
>    One good point is that it will help people assemble haproxy and varnish
>    together with haproxy doing the consistent hash and varnish caching after
>    it.
> 
> As most of you know, server-side keep-alive is the condition to release 1.5.
> Now we have it, we'll be able to improve on it but it's basically working.
> 
> I expect to release 1.5-final around January and mostly focus on chasing
> bugs till there. So I'd like to set a feature freeze. I know it doesn't
> mean much considering that we won't stop contribs. But I don't want to
> merge another large patch set before the release. Ideally there will not
> be any dev21 version. Reality probably is that we'll have to issue one
> because people will inevitably report annoying bugs that were not reported
> in snapshots.
> 
> I still have to perform difficult changes on the health checks system to
> adapt the agent-check after identifying some limitations caused by the
> original design we decided on a few months ago.
> 
> Another set of pending changes concerns the polling. Yes I know, each time
> I touch the pollers I break things. But I need to do them, as now with
> keep-alive it becomes obvious that we waste too much time enabling and
> disabling polling because we miss one flag ("this FD last returned EAGAIN").
> The good point is that it will simplify the connection management and checks.
> 
> If these points are done quick enough, I'll see if I can implement a very
> basic support for server connection sharing connection (without which I
> still consider keep-alive as not a huge improvement).
> 
> Note to users of 1.5-dev19 who hesitate to test this one : 71 bugs were fixed
> since dev19. Others probably added, but hopefully less.
> 
> Usual links below :
> 
>     Site index       : http://haproxy.1wt.eu/
>     Sources          : http://haproxy.1wt.eu/download/1.5/src/devel/
>     Changelog        : http://haproxy.1wt.eu/download/1.5/src/CHANGELOG
>     Cyril's HTML doc : 
> http://cbonte.github.com/haproxy-dconv/configuration-1.5.html
> 
> I'm not appending the changelog, it's too large.
> 
> Have fun and please report issues here,
> Willy
> 
> 


Reply via email to