diff --git a/cluster/router/chain/chain.go b/cluster/router/chain/chain.go
index 80f0b25d8a93a7b983ce6cb45d309198478c978b..369f24b3c472bb783ef76cb3b5f95d35f4a9b67f 100644
--- a/cluster/router/chain/chain.go
+++ b/cluster/router/chain/chain.go
@@ -127,8 +127,9 @@ func (c *RouterChain) SetInvokers(invokers []protocol.Invoker) {
 // from address update, or when timeInterval exceeds.
 func (c *RouterChain) loop() {
 	for {
+		ticker := time.NewTicker(timeInterval)
 		select {
-		case <-time.Tick(timeInterval):
+		case <-ticker.C:
 			c.buildCache()
 		case <-c.notify:
 			c.buildCache()