<div dir="ltr">Great, thank you!</div><br><div class="gmail_quote"><div dir="ltr">On Thu, Jul 14, 2016 at 4:26 PM Maxim Dounin <<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<br>
On Thu, Jul 14, 2016 at 07:22:06PM +0000, Chad Hansen wrote:<br>
<br>
> I'm looking for documentation or explanation for how keys expire in the<br>
> limit_req_zone. I have the basic documenations here:<br>
><br>
> *A client IP address serves as a key. Note that instead of $remote_addr,<br>
> the $binary_remote_addr variable is used here.<br>
> The $binary_remote_addr variable’s size is always 4 bytes for<br>
> IPv4 addresses or 16 bytes for IPv6 addresses. The stored state always<br>
> occupies 64 bytes on 32-bit platforms and 128 bytes on 64-bit platforms.<br>
> One megabyte zone can keep about 16 thousand 64-byte states or about 8<br>
> thousand 128-byte states. If the zone storage is exhausted, the server will<br>
> return the 503 (Service Temporarily Unavailable) error to all further<br>
> requests.*<br>
><br>
> But there's no explanation for how the key cache eventually clears itself.<br>
> Is any available?<br>
<br>
The same page also specifies the algorithm used,<br>
<a href="http://nginx.org/en/docs/http/ngx_http_limit_req_module.html" rel="noreferrer" target="_blank">http://nginx.org/en/docs/http/ngx_http_limit_req_module.html</a>:<br>
<br>
: The limitation is done using the “leaky bucket” method.<br>
<br>
See <a href="https://en.wikipedia.org/wiki/Leaky_bucket" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Leaky_bucket</a> for further<br>
details about the algorithm itself.<br>
<br>
The algorithm implies that there is no need to store anything for<br>
keys where there are no excessive requests.  Such zero states are<br>
automatically removed by the code when nginx is about to allocate<br>
a new state.<br>
<br>
--<br>
Maxim Dounin<br>
<a href="http://nginx.org/" rel="noreferrer" target="_blank">http://nginx.org/</a><br>
<br>
_______________________________________________<br>
nginx mailing list<br>
<a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a></blockquote></div>