diff --git a/p2p/server.go b/p2p/server.go
index e648c72c97943ca6d46b9d6a6085da24f039ea9a..98a2edd7c22a3c89e99c87b859c1765265694264 100644
--- a/p2p/server.go
+++ b/p2p/server.go
@@ -360,7 +360,7 @@ func (srv *Server) dialLoop() {
 		case <-refresh.C:
 			// Grab some nodes to connect to if we're not at capacity.
 			srv.lock.RLock()
-			needpeers := len(srv.peers) < srv.MaxPeers
+			needpeers := len(srv.peers) < srv.MaxPeers/2
 			srv.lock.RUnlock()
 			if needpeers {
 				go func() {