]> git.kaiwu.me - nginx.git/commit
Upstream hash: speedup consistent hash init.
authorRoman Arutyunyan <arut@nginx.com>
Mon, 2 Mar 2015 15:41:29 +0000 (18:41 +0300)
committerRoman Arutyunyan <arut@nginx.com>
Mon, 2 Mar 2015 15:41:29 +0000 (18:41 +0300)
commitbf7d76b943d04b3f05a500689a111f54f27fe80f
tree22fad14d57d8b5d164d4b2b4ba2563b9fd865183
parentde3adad8073d20404ce2e2b54f73aa9c72ce4e88
Upstream hash: speedup consistent hash init.

Repeatedly calling ngx_http_upstream_add_chash_point() to create
the points array in sorted order, is O(n^2) to the total weight.
This can cause nginx startup and reconfigure to be substantially
delayed.  For example, when total weight is 1000, startup takes
5s on a modern laptop.

Replace this with a linear insertion followed by QuickSort and
duplicates removal.  Startup for total weight of 1000 reduces to 40ms.

Based on a patch by Wai Keen Woon.
src/http/modules/ngx_http_upstream_hash_module.c