diff --git a/config/graceful_shutdown.go b/config/graceful_shutdown.go
index 1119c3a531668c08101b86b89402a02142c6ac86..fedb2c15ecdab62d17f0a4e83c45522f1c18acb0 100644
--- a/config/graceful_shutdown.go
+++ b/config/graceful_shutdown.go
@@ -21,7 +21,6 @@ import (
 	"os"
 	"os/signal"
 	"runtime/debug"
-	"syscall"
 	"time"
 )
 
@@ -66,18 +65,18 @@ func GracefulShutdownInit() {
 			// gracefulShutdownOnce.Do(func() {
 			BeforeShutdown()
 
-			switch sig {
 			// those signals' original behavior is exit with dump ths stack, so we try to keep the behavior
-			// syscall.SIGSYS will be ignored. It's not supported in windows platform.
-			case syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP,
-				syscall.SIGABRT:
-				debug.WriteHeapDump(os.Stdout.Fd())
-			default:
-				time.AfterFunc(totalTimeout(), func() {
-					logger.Warn("Shutdown gracefully timeout, application will shutdown immediately. ")
-					os.Exit(0)
-				})
+			for _, dumpSignal := range DumpHeapShutdownSignals {
+				if sig == dumpSignal {
+					debug.WriteHeapDump(os.Stdout.Fd())
+				}
 			}
+
+			time.AfterFunc(totalTimeout(), func() {
+				logger.Warn("Shutdown gracefully timeout, application will shutdown immediately. ")
+				os.Exit(0)
+			})
+
 			os.Exit(0)
 		}
 	}()
diff --git a/config/graceful_shutdown_signal_unix.go b/config/graceful_shutdown_signal_unix.go
index 6333a00220f5857940b7e523e729b9c0c0b782d8..59c1a5d149c2e9db8e9ac981adec107cafc863ad 100644
--- a/config/graceful_shutdown_signal_unix.go
+++ b/config/graceful_shutdown_signal_unix.go
@@ -25,3 +25,6 @@ import (
 var ShutdownSignals = []os.Signal{os.Interrupt, os.Kill, syscall.SIGKILL, syscall.SIGSTOP,
 	syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP,
 	syscall.SIGABRT, syscall.SIGSYS}
+
+var DumpHeapShutdownSignals = []os.Signal{syscall.SIGQUIT, syscall.SIGILL,
+	syscall.SIGTRAP, syscall.SIGABRT, syscall.SIGSYS}
diff --git a/config/graceful_shutdown_signal_windows.go b/config/graceful_shutdown_signal_windows.go
index ff7a48113c14512e7874638911df0970cadf679e..91b2bce7c2311ecbe9a1255be3e7b7b357a9b403 100644
--- a/config/graceful_shutdown_signal_windows.go
+++ b/config/graceful_shutdown_signal_windows.go
@@ -25,3 +25,5 @@ import (
 var ShutdownSignals = []os.Signal{os.Interrupt, os.Kill, syscall.SIGKILL,
 	syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP,
 	syscall.SIGABRT}
+
+var DumpHeapShutdownSignals = []os.Signal{syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP, syscall.SIGABRT}