diff --git a/registry/zookeeper/listener.go b/registry/zookeeper/listener.go
index 777c460f535b923b271162ff28840fbea19600e0..c25028d58f32f4028779fd6c050e60eef2bd7bd5 100644
--- a/registry/zookeeper/listener.go
+++ b/registry/zookeeper/listener.go
@@ -77,6 +77,7 @@ type RegistryConfigurationListener struct {
 }
 
 func NewRegistryConfigurationListener(client *zk.ZookeeperClient, reg *zkRegistry) *RegistryConfigurationListener {
+	reg.wg.Add(1)
 	return &RegistryConfigurationListener{client: client, registry: reg, events: make(chan *config_center.ConfigChangeEvent, 32)}
 }
 func (l *RegistryConfigurationListener) Process(configType *config_center.ConfigChangeEvent) {
diff --git a/registry/zookeeper/registry.go b/registry/zookeeper/registry.go
index dc408a15f760a6e05cdb14c4f0b0ef33d66d71b0..13fb6c751f8010f1e716e37541aa8ac59256288c 100644
--- a/registry/zookeeper/registry.go
+++ b/registry/zookeeper/registry.go
@@ -432,7 +432,7 @@ func (r *zkRegistry) Subscribe(url *common.URL, notifyListener registry.NotifyLi
 			time.Sleep(time.Duration(RegistryConnDelay) * time.Second)
 			continue
 		}
-		r.wg.Add(1)
+
 		for {
 			if serviceEvent, err := listener.Next(); err != nil {
 				listener.Close()