limit_req_zone key cache lifetime

Maxim Dounin mdounin at mdounin.ru
Thu Jul 14 20:26:26 UTC 2016


Hello!

On Thu, Jul 14, 2016 at 07:22:06PM +0000, Chad Hansen wrote:

> I'm looking for documentation or explanation for how keys expire in the
> limit_req_zone. I have the basic documenations here:
> 
> *A client IP address serves as a key. Note that instead of $remote_addr,
> the $binary_remote_addr variable is used here.
> The $binary_remote_addr variable’s size is always 4 bytes for
> IPv4 addresses or 16 bytes for IPv6 addresses. The stored state always
> occupies 64 bytes on 32-bit platforms and 128 bytes on 64-bit platforms.
> One megabyte zone can keep about 16 thousand 64-byte states or about 8
> thousand 128-byte states. If the zone storage is exhausted, the server will
> return the 503 (Service Temporarily Unavailable) error to all further
> requests.*
> 
> But there's no explanation for how the key cache eventually clears itself.
> Is any available?

The same page also specifies the algorithm used,
http://nginx.org/en/docs/http/ngx_http_limit_req_module.html:

: The limitation is done using the “leaky bucket” method.

See https://en.wikipedia.org/wiki/Leaky_bucket for further 
details about the algorithm itself.

The algorithm implies that there is no need to store anything for 
keys where there are no excessive requests.  Such zero states are 
automatically removed by the code when nginx is about to allocate 
a new state.

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx mailing list