We are testing the Geo-IP module with the city and country databases and
noticed a decrease in performance for all locations on the server. It
seems that whenever the geoip_country and geoip_city directives are
specified the module looks up the geo variables for the IP address even
if the variables are not used inside the location. We did the simplest
test with Apache Bench against two identical servers on a location that
doesn’t use the geo variables. One server has the geo databases loaded
and the other has them commented out.
We did several tests, here are the averages for a few thousand HTTP
requests with concurrency level 30:
Without geo databases loaded:
Time per request: 12.260 [ms]
Requests per second: 2446.91 [#/sec]
With geo databases loaded:
Time per request: 35.352 [ms]
Requests per second: 848.60 [#/sec]
Is it possible to lazy lookup the values for the geo variables when they
are requested?
Our configuration is quitelarge and consists of several includes for
servers and maps. Could you perhaps be more specific so i can confirm
whether our config is designed so the module is more costly? And do you
happen to know a work-around or solution for this case?
We have the following modules enabled and disabled:
After i read your e-mail i tested again and there was a clear difference
in performance but more repeated tests showed no difference in
performance at all. Something else must be acting up.