]> git.openstreetmap.org Git - nominatim.git/blobdiff - utils/cron_banip.py
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / utils / cron_banip.py
index 4cc50fc51757bfc84b79ce4013760d4ed2f27e80..d716affbe8e153b99d3fc8810c36ee61dbde9b19 100755 (executable)
@@ -62,6 +62,7 @@ BULKLONG_LIMIT=8000
 BULKSHORT_LIMIT=2000
 BLOCK_UPPER=19000
 BLOCK_LOADFAC=300
+BULK_LOADFAC=100
 
 #
 # END OF DEFAULT SETTINGS
@@ -77,8 +78,6 @@ fd = open("/proc/loadavg")
 avgload = int(float(fd.readline().split()[1]))
 fd.close()
 
-BLOCK_LIMIT = BLOCK_UPPER - BLOCK_LOADFAC * avgload
-
 # read the previous blocklist
 WHITELIST = set(WHITELIST.split()) if WHITELIST else set()
 prevblocks = []
@@ -100,6 +99,12 @@ try:
 except IOError:
     pass #ignore non-existing file
 
+# current number of bulks
+numbulks = len(prevbulks)
+
+BLOCK_LIMIT = BLOCK_UPPER - BLOCK_LOADFAC * (numbulks - 30)
+BULKLONG_LIMIT = BULKLONG_LIMIT - BULK_LOADFAC * (avgload - 16)
+
 conn = psycopg2.connect('dbname=nominatim')
 cur = conn.cursor()
 
@@ -107,7 +112,7 @@ cur = conn.cursor()
 cur.execute("""
   SELECT ipaddress, max(count) FROM
    ((SELECT * FROM
-     (SELECT ipaddress, sum(CASE WHEN type = 'search' THEN 2 ELSE 1 END) as count FROM new_query_log 
+     (SELECT ipaddress, sum(CASE WHEN type = 'search' THEN 3 ELSE 1 END) as count FROM new_query_log
       WHERE starttime > now() - interval '1 hour' GROUP BY ipaddress) as i
    WHERE count > %s)
    UNION