diff --git a/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterManager.java b/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterManager.java
index 81c411c..9a89b92 100644
--- a/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterManager.java
+++ b/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterManager.java
@@ -80,7 +80,7 @@
               .createIncremental(configConverter.getCurrentData(), lastData);
           eventBus.post(event);
         }
-        startTask(new BackOffSleepTask(configCenterConfiguration.getRefreshInterval(), new PollConfigurationTask(0)));
+        startTask(new BackOffSleepTask(configCenterConfiguration.getRefreshIntervalInMillis(), new PollConfigurationTask(0)));
       } catch (Exception e) {
         LOGGER.error("get configurations from ConfigCenter failed, and will try again.", e);
         startTask(new BackOffSleepTask(failCount + 1, new PollConfigurationTask(failCount + 1)));
diff --git a/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/ConfigCenterConfiguration.java b/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/ConfigCenterConfiguration.java
index ba4dbc3..0556d14 100644
--- a/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/ConfigCenterConfiguration.java
+++ b/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/ConfigCenterConfiguration.java
@@ -19,14 +19,14 @@
 
 public class ConfigCenterConfiguration {
 
-    private long refreshInterval;
+    private long refreshIntervalInMillis = 15000;
 
-    public long getRefreshInterval() {
-        return refreshInterval;
+    public long getRefreshIntervalInMillis() {
+        return refreshIntervalInMillis;
     }
 
-    public ConfigCenterConfiguration setRefreshInterval(long refreshInterval) {
-        this.refreshInterval = refreshInterval;
+    public ConfigCenterConfiguration setRefreshIntervalInMillis(long refreshIntervalInMillis) {
+        this.refreshIntervalInMillis = refreshIntervalInMillis;
         return this;
     }
 }
diff --git a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigManager.java b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigManager.java
index 435d949..7c1eaf9 100644
--- a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigManager.java
+++ b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigManager.java
@@ -41,8 +41,6 @@
 
   private static final long LONG_POLLING_INTERVAL = 1000;
 
-  private static final long POLLING_INTERVAL = 15000;
-
   private final KieConfigOperation configKieClient;
 
   private final EventBus eventBus;
@@ -132,7 +130,7 @@
         if (KieConfigManager.this.kieConfiguration.isEnableLongPolling()) {
           startTask(new BackOffSleepTask(LONG_POLLING_INTERVAL, new PollConfigurationTask(0, this.configurationsRequest)));
         } else {
-          startTask(new BackOffSleepTask(POLLING_INTERVAL, new PollConfigurationTask(0, this.configurationsRequest)));
+          startTask(new BackOffSleepTask(kieConfiguration.getRefreshIntervalInMillis(), new PollConfigurationTask(0, this.configurationsRequest)));
         }
       } catch (Exception e) {
         LOGGER.error("get configurations from KieConfigCenter failed, and will try again.", e);
diff --git a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
index 8bf93c1..2a8bf4d 100644
--- a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
+++ b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
@@ -22,6 +22,8 @@
 
   private int pollingWaitInSeconds;
 
+  private int refreshIntervalInMillis = 15000;
+
   private String project;
 
   private String appName;
@@ -149,4 +151,13 @@
     this.firstPullRequired = firstPullRequired;
     return this;
   }
+
+  public int getRefreshIntervalInMillis() {
+    return refreshIntervalInMillis;
+  }
+
+  public KieConfiguration setRefreshIntervalInMillis(int refreshIntervallnMillis) {
+    this.refreshIntervalInMillis = refreshIntervallnMillis;
+    return this;
+  }
 }
diff --git a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfig.java b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfig.java
index 5352218..837f6e0 100644
--- a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfig.java
+++ b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfig.java
@@ -47,7 +47,7 @@
 
   public static final String FILE_SOURCE = "servicecomb.config.client.fileSource";
 
-  private static final int DEFAULT_REFRESH_INTERVAL = 30000;
+  private static final int DEFAULT_REFRESH_INTERVAL = 15000;
 
   private static final int DEFAULT_FIRST_REFRESH_INTERVAL = 0;
 
diff --git a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfigurationSourceImpl.java b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfigurationSourceImpl.java
index d07ee76..1af9136 100644
--- a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfigurationSourceImpl.java
+++ b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfigurationSourceImpl.java
@@ -143,7 +143,7 @@
   }
 
   private ConfigCenterConfiguration createConfigCenterConfiguration(){
-    return new ConfigCenterConfiguration().setRefreshInterval(ConfigCenterConfig.INSTANCE.getRefreshInterval());
+    return new ConfigCenterConfiguration().setRefreshIntervalInMillis(ConfigCenterConfig.INSTANCE.getRefreshInterval());
   }
 
   private HttpTransport createHttpTransport(AddressManager kieAddressManager, RequestConfig requestConfig,
diff --git a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
index 6409ff3..31371cd 100644
--- a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
+++ b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
@@ -61,7 +61,7 @@
 
   public static final String FILE_SOURCE = "servicecomb.config.client.fileSource";
 
-  private static final int DEFAULT_REFRESH_INTERVAL = 3000;
+  private static final int DEFAULT_REFRESH_INTERVAL = 15000;
 
   private static final int DEFAULT_POLLING_WAIT_TIME = 10;
 
diff --git a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
index dc5cfa5..1c0de54 100644
--- a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
+++ b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
@@ -120,6 +120,7 @@
         .setEnvironment(KieConfig.INSTANCE.getEnvironment())
         .setPollingWaitInSeconds(KieConfig.INSTANCE.getPollingWaitTime())
         .setProject(KieConfig.INSTANCE.getDomainName())
+        .setRefreshIntervalInMillis(KieConfig.INSTANCE.getRefreshInterval())
         .setServiceName(KieConfig.INSTANCE.getServiceName());
   }
 
