Nginx with big geo maps affects whole system performance on reload

Maxim Dounin mdounin at mdounin.ru
Tue Aug 3 14:41:27 UTC 2021


Hello!

On Tue, Aug 03, 2021 at 09:13:07AM -0400, SannisDev wrote:

> I'm running Nginx 1.20.1 on CentOS 8.4.2105 with a quite large geo maps,
> including country/isp/connection for both IPv4 and IPv6, with raw size about
> 80Mb.
> Hardware is: 2x Intel(R) Xeon(R) Silver 4116 CPU @ 2.10GHz, 64Gb RAM
> 
> On nginx testconf or reload I'm experiencing increase of running nginx
> latency, 99th percentile growth from 10ms to seconds.

[...]

> I suppose that this cache misses is the root cause of system slowdown on
> testconf/reload.
> 
> Maybe someone have same problem and have some suggestions how to improve
> this situation?

Loading large geo map can be quite expensive, that's expected: 
nginx has to parse all the records provided in text and build 
corresponding radix tree.  Make sure you have enough spare CPU and 
free memory to actually do the work without affecting other tasks 
on the server.  In particular, in my practice it is a good idea to 
make sure the number of nginx worker processes is less than number 
of available cores, or you'll risk getting high latencies when 
doing CPU-intensive tasks like parsing geo maps or compressing 
logs.

Also it might be a good idea to switch to using ranges and a 
separate include file, so nginx will be able to cache parsing 
results in a binary file.

-- 
Maxim Dounin
http://mdounin.ru/


More information about the nginx mailing list