diff --git a/views/utils.py b/views/utils.py
index a46c19e7167446c31eacef2d13680a86845658d4..0decc76cd112d14f8feef112428e01fb6393a6fb 100644
--- a/views/utils.py
+++ b/views/utils.py
@@ -7,7 +7,13 @@ from django.conf import settings
 
 from network.models import Ifce
 from rg.models import Graph
-import gevent
+# import gevent
+
+from gevent.pool import Pool
+
+CONCURRECY = 50
+pool = Pool(CONCURRECY)
+
 
 
 def last_x_rec(x):
@@ -86,10 +92,15 @@ def get_load_for_interfaces(ifces, key, start=None, end=None):
 def get_load_for_links(ifces, start=None, end=None):
     response = {}
     threads = []
+
+    spawned = 0
     for key, val in ifces.iteritems():
         # response.update(get_load_for_interfaces(val, key, start, end))
-        threads.append(gevent.spawn(get_load_for_interfaces, val, key, start, end))
-    gevent.joinall(threads)
+        threads.append(pool.spawn(get_load_for_interfaces, val, key, start, end))
+        spawned += 1
+        if spawned == CONCURRECY:
+            pool.join()
+    pool.join()
     for thread in threads:
         if thread.value:
             response.update(thread.value)