diff --git a/common/constant/key.go b/common/constant/key.go
index 2bfebf8f07dfe483134c3813da44ba0166b97309..122b8e50563ee5d21f7c9a07abe7c1f58a83970a 100644
--- a/common/constant/key.go
+++ b/common/constant/key.go
@@ -71,8 +71,8 @@ const (
 	EXECUTE_LIMIT_KEY                      = "execute.limit"
 	DEFAULT_EXECUTE_LIMIT                  = "-1"
 	EXECUTE_REJECTED_EXECUTION_HANDLER_KEY = "execute.limit.rejected.handler"
-	PROVIDER_SHUTDOWN_FILTER = "pshutdown"
-	CONSUMER_SHUTDOWN_FILTER = "cshutdown"
+	PROVIDER_SHUTDOWN_FILTER               = "pshutdown"
+	CONSUMER_SHUTDOWN_FILTER               = "cshutdown"
 )
 
 const (
diff --git a/common/extension/graceful_shutdown.go b/common/extension/graceful_shutdown.go
index 02fedc683881f51f902c62bc62350b752af67ee1..c8807fcc28c18c1a6fddb4e97708e9b0d5cda243 100644
--- a/common/extension/graceful_shutdown.go
+++ b/common/extension/graceful_shutdown.go
@@ -22,7 +22,7 @@ import (
 )
 
 var (
-	customShutdownCallbacks     = list.New()
+	customShutdownCallbacks = list.New()
 )
 
 /**
@@ -44,7 +44,7 @@ var (
  * the benefit of that mechanism is low.
  * And it may introduce much complication for another users.
  */
-func AddCustomShutdownCallback(callback func())  {
+func AddCustomShutdownCallback(callback func()) {
 	customShutdownCallbacks.PushBack(callback)
 }
 
diff --git a/config/consumer_config.go b/config/consumer_config.go
index 54b87e22f4107eaf2b64c5eaa995054914ee80d0..72f60b5f77b9b9cc633d8939713c0eb93563deac 100644
--- a/config/consumer_config.go
+++ b/config/consumer_config.go
@@ -52,12 +52,12 @@ type ConsumerConfig struct {
 	ProxyFactory    string `yaml:"proxy_factory" default:"default" json:"proxy_factory,omitempty" property:"proxy_factory"`
 	Check           *bool  `yaml:"check"  json:"check,omitempty" property:"check"`
 
-	Registry     *RegistryConfig             `yaml:"registry" json:"registry,omitempty" property:"registry"`
-	Registries   map[string]*RegistryConfig  `yaml:"registries" json:"registries,omitempty" property:"registries"`
-	References   map[string]*ReferenceConfig `yaml:"references" json:"references,omitempty" property:"references"`
-	ProtocolConf interface{}                 `yaml:"protocol_conf" json:"protocol_conf,omitempty" property:"protocol_conf"`
-	FilterConf   interface{}                 `yaml:"filter_conf" json:"filter_conf,omitempty" property:"filter_conf" `
-	ShutdownConfig *ShutdownConfig `yaml:"shutdown_conf" json:"shutdown_conf,omitempty" property:"shutdown_conf" `
+	Registry       *RegistryConfig             `yaml:"registry" json:"registry,omitempty" property:"registry"`
+	Registries     map[string]*RegistryConfig  `yaml:"registries" json:"registries,omitempty" property:"registries"`
+	References     map[string]*ReferenceConfig `yaml:"references" json:"references,omitempty" property:"references"`
+	ProtocolConf   interface{}                 `yaml:"protocol_conf" json:"protocol_conf,omitempty" property:"protocol_conf"`
+	FilterConf     interface{}                 `yaml:"filter_conf" json:"filter_conf,omitempty" property:"filter_conf" `
+	ShutdownConfig *ShutdownConfig             `yaml:"shutdown_conf" json:"shutdown_conf,omitempty" property:"shutdown_conf" `
 }
 
 func (c *ConsumerConfig) UnmarshalYAML(unmarshal func(interface{}) error) error {
diff --git a/config/graceful_shutdown_config.go b/config/graceful_shutdown_config.go
index c16123624f37c0e43cf77efcb87ce47306877eb0..d7d21c1499af3a8e362d8b23456899c0938f4001 100644
--- a/config/graceful_shutdown_config.go
+++ b/config/graceful_shutdown_config.go
@@ -18,16 +18,17 @@
 package config
 
 import (
-	"strconv"
 	"time"
 )
 import (
 	"github.com/apache/dubbo-go/common/logger"
 )
+
 const (
-	defaultTimeout  = 60 * time.Second
+	defaultTimeout     = 60 * time.Second
 	defaultStepTimeout = 10 * time.Second
 )
+
 type ShutdownConfig struct {
 	/*
 	 * Total timeout. Even though we don't release all resources,
@@ -35,7 +36,7 @@ type ShutdownConfig struct {
 	 * default value is 60 * 1000 ms = 1 minutes
 	 * In general, it should be bigger than 3 * StepTimeout.
 	 */
-	Timeout string `yaml:"timeout" json:"timeout,omitempty" property:"timeout"`
+	Timeout string `default:"60s" yaml:"timeout" json:"timeout,omitempty" property:"timeout"`
 	/*
 	 * the timeout on each step. You should evaluate the response time of request
 	 * and the time that client noticed that server shutdown.
@@ -43,7 +44,7 @@ type ShutdownConfig struct {
 	 * and the 99.9% requests will return response in 2s, so the StepTimeout will be bigger than(10+2) * 1000ms,
 	 * maybe (10 + 2*3) * 1000ms is a good choice.
 	 */
-	StepTimeout string `yaml:"step_timeout" json:"step.timeout,omitempty" property:"step.timeout"`
+	StepTimeout string `default:"10s" yaml:"step_timeout" json:"step.timeout,omitempty" property:"step.timeout"`
 	// when we try to shutdown the application, we will reject the new requests. In most cases, you don't need to configure this.
 	RejectRequestHandler string `yaml:"reject_handler" json:"reject_handler,omitempty" property:"reject_handler"`
 	// true -> new request will be rejected.
@@ -55,21 +56,21 @@ type ShutdownConfig struct {
 }
 
 func (config *ShutdownConfig) GetTimeout() time.Duration {
-	result, err := strconv.ParseInt(config.Timeout, 0, 0)
+	result, err := time.ParseDuration(config.Timeout)
 	if err != nil {
 		logger.Errorf("The Timeout configuration is invalid: %s, and we will use the default value: %s",
 			config.Timeout, defaultTimeout.String(), err)
 		return defaultTimeout
 	}
-	return time.Millisecond * time.Duration(result)
+	return result
 }
 
 func (config *ShutdownConfig) GetStepTimeout() time.Duration {
-	result, err := strconv.ParseInt(config.StepTimeout, 0, 0)
+	result, err := time.ParseDuration(config.StepTimeout)
 	if err != nil {
 		logger.Errorf("The StepTimeout configuration is invalid: %s, and we will use the default value: %s",
 			config.Timeout, defaultStepTimeout.String(), err)
 		return defaultStepTimeout
 	}
-	return time.Millisecond * time.Duration(result)
+	return result
 }
diff --git a/config/graceful_shutdown_config_test.go b/config/graceful_shutdown_config_test.go
index 6e84f58692f88203f2fecccfc7058069167eb641..4b6645db03902df4345ed82048724cb706bdff3c 100644
--- a/config/graceful_shutdown_config_test.go
+++ b/config/graceful_shutdown_config_test.go
@@ -39,8 +39,8 @@ func TestShutdownConfig_GetTimeout(t *testing.T) {
 	assert.Equal(t, 10*time.Second, config.GetStepTimeout())
 
 	config = ShutdownConfig{
-		Timeout:     "34",
-		StepTimeout: "79",
+		Timeout:     "34ms",
+		StepTimeout: "79ms",
 	}
 
 	assert.Equal(t, 34*time.Millisecond, config.GetTimeout())
diff --git a/config/graceful_shutdown_test.go b/config/graceful_shutdown_test.go
index 981de6b6087811fbae628b89357dc4560558e5c7..ca01f68142944afa33f5fa5e7541d5e6e8107869 100644
--- a/config/graceful_shutdown_test.go
+++ b/config/graceful_shutdown_test.go
@@ -42,8 +42,6 @@ func TestBeforeShutdown(t *testing.T) {
 		return &mockRegistryProtocol{}
 	})
 
-
-
 	protocolConfigs := make(map[interface{}]interface{})
 	protocolConfigs[constant.DUBBO] = "aaa"
 
@@ -54,7 +52,7 @@ func TestBeforeShutdown(t *testing.T) {
 		ProtocolConf: protocolConfigs,
 		ShutdownConfig: &ShutdownConfig{
 			Timeout:     "1",
-			StepTimeout: "1000",
+			StepTimeout: "1s",
 		},
 	}
 
@@ -66,7 +64,7 @@ func TestBeforeShutdown(t *testing.T) {
 	providerConfig = &ProviderConfig{
 		ShutdownConfig: &ShutdownConfig{
 			Timeout:     "1",
-			StepTimeout: "1000",
+			StepTimeout: "1s",
 		},
 		ProtocolConf: providerProtocols,
 	}
@@ -76,7 +74,7 @@ func TestBeforeShutdown(t *testing.T) {
 	providerConfig = &ProviderConfig{
 		ShutdownConfig: &ShutdownConfig{
 			Timeout:     "1",
-			StepTimeout: "-1",
+			StepTimeout: "-1s",
 		},
 		ProtocolConf: protocolConfigs,
 	}
@@ -85,7 +83,7 @@ func TestBeforeShutdown(t *testing.T) {
 		ProtocolConf: protocolConfigs,
 		ShutdownConfig: &ShutdownConfig{
 			Timeout:     "1",
-			StepTimeout: "-1",
+			StepTimeout: "-1s",
 		},
 	}
 
diff --git a/config/provider_config.go b/config/provider_config.go
index d1de691be7f4d4462ab5a299cf9cc3586e0b43cb..0fed44c81b124cd40825695981a5394c273203fa 100644
--- a/config/provider_config.go
+++ b/config/provider_config.go
@@ -44,12 +44,12 @@ type ProviderConfig struct {
 
 	ApplicationConfig *ApplicationConfig         `yaml:"application" json:"application,omitempty" property:"application"`
 	Registry          *RegistryConfig            `yaml:"registry" json:"registry,omitempty" property:"registry"`
-	Registries     map[string]*RegistryConfig `yaml:"registries" json:"registries,omitempty" property:"registries"`
-	Services       map[string]*ServiceConfig  `yaml:"services" json:"services,omitempty" property:"services"`
-	Protocols      map[string]*ProtocolConfig `yaml:"protocols" json:"protocols,omitempty" property:"protocols"`
-	ProtocolConf   interface{}                `yaml:"protocol_conf" json:"protocol_conf,omitempty" property:"protocol_conf" `
-	FilterConf     interface{}                `yaml:"filter_conf" json:"filter_conf,omitempty" property:"filter_conf" `
-	ShutdownConfig *ShutdownConfig            `yaml:"shutdown_conf" json:"shutdown_conf,omitempty" property:"shutdown_conf" `
+	Registries        map[string]*RegistryConfig `yaml:"registries" json:"registries,omitempty" property:"registries"`
+	Services          map[string]*ServiceConfig  `yaml:"services" json:"services,omitempty" property:"services"`
+	Protocols         map[string]*ProtocolConfig `yaml:"protocols" json:"protocols,omitempty" property:"protocols"`
+	ProtocolConf      interface{}                `yaml:"protocol_conf" json:"protocol_conf,omitempty" property:"protocol_conf" `
+	FilterConf        interface{}                `yaml:"filter_conf" json:"filter_conf,omitempty" property:"filter_conf" `
+	ShutdownConfig    *ShutdownConfig            `yaml:"shutdown_conf" json:"shutdown_conf,omitempty" property:"shutdown_conf" `
 }
 
 func (c *ProviderConfig) UnmarshalYAML(unmarshal func(interface{}) error) error {
diff --git a/filter/impl/graceful_shutdown_filter_test.go b/filter/impl/graceful_shutdown_filter_test.go
index 61a301dc5f62f0e96fae1d5a07f368f3bae641b8..f541219b5a097cbe1e025ec9374e337a83e8e4d4 100644
--- a/filter/impl/graceful_shutdown_filter_test.go
+++ b/filter/impl/graceful_shutdown_filter_test.go
@@ -39,7 +39,7 @@ func TestGenericFilter_Invoke(t *testing.T) {
 	invoc := invocation.NewRPCInvocation("GetUser", []interface{}{"OK"}, make(map[string]string, 0))
 
 	invokeUrl := common.NewURLWithOptions(
-		common.WithParams(url.Values{}), )
+		common.WithParams(url.Values{}))
 
 	shutdownFilter := extension.GetFilter(constant.PROVIDER_SHUTDOWN_FILTER).(*gracefulShutdownFilter)