]> git.openstreetmap.org Git - nominatim.git/commitdiff
use db load for blocks
authorSarah Hoffmann <lonvia@denofr.de>
Wed, 27 Mar 2013 22:29:48 +0000 (23:29 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Wed, 27 Mar 2013 22:29:48 +0000 (23:29 +0100)
utils/cron_banip.py

index 54b7ae8c282f0969c06318a30cdd3716f6e07edb..55a7b29556e5bd019e2712784887663274186888 100755 (executable)
@@ -62,8 +62,8 @@ BULKLONG_LIMIT=8000
 BULKSHORT_LIMIT=2000
 BLOCK_UPPER=19000
 BLOCK_LOWER=4000
-BLOCK_LOADFAC=300
-BULK_LOADFAC=100
+BLOCK_LOADFAC=380
+BULK_LOADFAC=160
 BULK_LOWER=1500
 
 #
@@ -75,11 +75,6 @@ try:
 except IOError:
     pass
 
-# determine current load
-fd = open("/proc/loadavg")
-avgload = int(float(fd.readline().split()[2]))
-fd.close()
-
 # read the previous blocklist
 WHITELIST = set(WHITELIST.split()) if WHITELIST else set()
 prevblocks = []
@@ -101,14 +96,18 @@ try:
 except IOError:
     pass #ignore non-existing file
 
-# current number of bulks
-numbulks = len(prevbulks)
-
-BLOCK_LIMIT = max(BLOCK_LOWER, BLOCK_UPPER - BLOCK_LOADFAC * (numbulks - 27))
-BULKLONG_LIMIT = max(BULK_LOWER, BULKLONG_LIMIT - BULK_LOADFAC * (avgload - 14))
-
+# determine current load
+fd = open("/proc/loadavg")
+avgload = int(float(fd.readline().split()[2]))
+fd.close()
+# DB load
 conn = psycopg2.connect('dbname=nominatim')
 cur = conn.cursor()
+cur.execute("select count(*)/60 from new_query_log where starttime > now() - interval '1min'")
+dbload = int(cur.fetchone()[0])
+
+BLOCK_LIMIT = max(BLOCK_LOWER, BLOCK_UPPER - BLOCK_LOADFAC * (dbload - 70))
+BULKLONG_LIMIT = max(BULK_LOWER, BULKLONG_LIMIT - BULK_LOADFAC * (avgload - 14))
 
 # get the new block candidates
 cur.execute("""