diff --git a/conf/frpc.ini b/conf/frpc.ini
index 4ae5a4ab..967ce9a8 100644
--- a/conf/frpc.ini
+++ b/conf/frpc.ini
@@ -22,6 +22,11 @@ auth_token = 123
 # for privilege mode
 privilege_token = 12345678
 
+# [optional]  heartbeat conf
+# heartbeat_interval default value is 20, heartbeat_timeout default value is 90
+heartbeat_interval = 20
+heartbeat_timeout = 90
+
 
 # ssh is the proxy name same as server's configuration
 [ssh]
diff --git a/conf/frps.ini b/conf/frps.ini
index da871860..b91bf02f 100644
--- a/conf/frps.ini
+++ b/conf/frps.ini
@@ -30,6 +30,10 @@ log_max_days = 3
 privilege_mode = true
 privilege_token = 12345678
 
+# [optional]heartbeat conf
+# heartbeat_timeout default value is 90
+heartbeat_timeout = 90
+
 # only allow frpc to bind ports you list, if you set nothing, there won't be any limit
 privilege_allow_ports = 2000-3000,3001,3003,4000-50000
 
diff --git a/src/models/client/config.go b/src/models/client/config.go
index 03eabde2..2d62ad79 100644
--- a/src/models/client/config.go
+++ b/src/models/client/config.go
@@ -98,6 +98,34 @@ func LoadConf(confFile string) (err error) {
 		authToken = tmpStr
 	}
 
+	tmpStr, ok = conf.Get("common", "heartbeat_timeout")
+	if ok {
+		v, err := strconv.ParseInt(tmpStr, 10, 64)
+		if err != nil {
+			return fmt.Errorf("Parse conf error: heartbeat_timeout is incorrect")
+		} else {
+			HeartBeatTimeout = v
+		}
+	}
+
+	tmpStr, ok = conf.Get("common", "heartbeat_interval")
+	if ok {
+		v, err := strconv.ParseInt(tmpStr, 10, 64)
+		if err != nil {
+			return fmt.Errorf("Parse conf error: heartbeat_interval is incorrect")
+		} else {
+			HeartBeatInterval = v
+		}
+	}
+
+	if HeartBeatInterval <= 0 {
+		return fmt.Errorf("Parse conf error: heartbeat_interval is incorrect")
+	}
+
+	if HeartBeatTimeout < HeartBeatInterval {
+		return fmt.Errorf("Parse conf error: heartbeat_timeout is incorrect, heartbeat_timeout is less than heartbeat_interval")
+	}
+
 	// proxies
 	for name, section := range conf {
 		if name != "common" {
diff --git a/src/models/server/config.go b/src/models/server/config.go
index 12f58248..8fe799a9 100644
--- a/src/models/server/config.go
+++ b/src/models/server/config.go
@@ -237,6 +237,16 @@ func loadCommonConf(confFile string) error {
 	if ok {
 		SubDomainHost = strings.ToLower(strings.TrimSpace(SubDomainHost))
 	}
+
+	tmpStr, ok = conf.Get("common", "heartbeat_timeout")
+	if ok {
+		v, err := strconv.ParseInt(tmpStr, 10, 64)
+		if err != nil {
+			return fmt.Errorf("Parse conf error: heartbeat_timeout is incorrect")
+		} else {
+			HeartBeatTimeout = v
+		}
+	}
 	return nil
 }