diff --git a/lib/core/option.py b/lib/core/option.py
index 5ef766eda..a8eda4da4 100644
--- a/lib/core/option.py
+++ b/lib/core/option.py
@@ -1556,7 +1556,7 @@ def _setKnowledgeBaseAttributes(flushAll=True):
     kb.lastParserStatus = None
 
     kb.locks = AttribDict()
-    for _ in ("cache", "count", "index", "io", "limit", "log", "value"):
+    for _ in ("cache", "count", "index", "io", "limit", "log", "request", "value"):
         kb.locks[_] = threading.Lock()
 
     kb.matchRatio = None
@@ -1595,6 +1595,7 @@ def _setKnowledgeBaseAttributes(flushAll=True):
     kb.redirectSetCookie = None
     kb.reflectiveMechanism = True
     kb.reflectiveCounters = {REFLECTIVE_COUNTER.MISS: 0, REFLECTIVE_COUNTER.HIT: 0}
+    kb.requestCounter = 0
     kb.responseTimes = []
     kb.resumeValues = True
     kb.safeCharEncode = False
diff --git a/lib/request/connect.py b/lib/request/connect.py
index 080a7773f..a0919c63c 100644
--- a/lib/request/connect.py
+++ b/lib/request/connect.py
@@ -179,7 +179,9 @@ class Connect(object):
             cpuThrottle(conf.cpuThrottle)
 
         threadData = getCurrentThreadData()
-        threadData.lastRequestUID += 1
+        with kb.locks.request:
+            kb.requestCounter += 1
+            threadData.lastRequestUID = kb.requestCounter
 
         url = kwargs.get('url',                     conf.url)
         get = kwargs.get('get',                     None)