diff --git a/briar-core/src/net/sf/briar/plugins/PollerImpl.java b/briar-core/src/net/sf/briar/plugins/PollerImpl.java
index 204547f1c9faf2827d26e8a385574bedb1b5de73..c5ea77feaba4897a7a6a28fe3289b1c52eb3736b 100644
--- a/briar-core/src/net/sf/briar/plugins/PollerImpl.java
+++ b/briar-core/src/net/sf/briar/plugins/PollerImpl.java
@@ -36,14 +36,16 @@ class PollerImpl implements Poller, Runnable {
 	}
 
 	public synchronized void start(Collection<Plugin> plugins) {
-		for(Plugin plugin : plugins) schedule(plugin);
+		for(Plugin plugin : plugins) schedule(plugin, true);
 		new Thread(this, "Poller").start();
 	}
 
-	private synchronized void schedule(Plugin plugin) {
+	private synchronized void schedule(Plugin plugin, boolean randomise) {
 		if(plugin.shouldPoll()) {
 			long now = clock.currentTimeMillis();
 			long interval = plugin.getPollingInterval();
+			// Randomise intervals at startup to spread out connection attempts
+			if(randomise) interval = (long) (interval * Math.random());
 			pollTimes.add(new PollTime(now + interval, plugin));
 		}
 	}
@@ -74,7 +76,7 @@ class PollerImpl implements Poller, Runnable {
 							p.plugin.poll(connected);
 						}
 					});
-					schedule(p.plugin);
+					schedule(p.plugin, false);
 				} else {
 					try {
 						wait(p.time - now);