diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 692d8a2a17..fb400a3a91 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -1035,6 +1035,25 @@ include_dir 'conf.d'
       </listitem>
      </varlistentry>
 
+     <varlistentry id="guc-remote-servers-connection-check-interval" xreflabel="remote_servers_connection_check_interval">
+      <term><varname>remote_servers_connection_check_interval</varname> (<type>integer</type>)
+      <indexterm>
+       <primary><varname>remote_servers_connection_check_interval</varname> configuration parameter</primary>
+      </indexterm>
+      </term>
+      <listitem>
+       <para>
+        Sets the time interval between optional checks that the remote servers
+        are still alive. If this parameter is set to a valid value, registered
+        callback functions are executed at the specified time interval.
+        If your FDW extension does not implement a callback function, nothing
+        happens after the specified amount of time. If the value is specified
+        without units, it is taken as milliseconds. The default value is
+        <literal>0</literal>, this means the feature is disabled.
+       </para>
+      </listitem>
+     </varlistentry>
+
      </variablelist>
      </sect2>
 
diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index dbf5dd3d15..3b75a77067 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -2136,4 +2136,40 @@ GetForeignServerByName(const char *name, bool missing_ok);
 
   </sect1>
 
+   <sect1 id="fdw-checking-remote-servers">
+    <title>Checking the Health of Remote Servers via Foreign Data Wrapper</title>
+
+    <para>
+     For verifying the health of remote servers, callback functions can be
+     registered that runs periodically. The time interval is controlled by
+     <xref linkend="guc-remote-servers-connection-check-interval"/>.
+     The API for registering functions is:
+    <programlisting>
+CheckingRemoteServersCallbackItem *
+RegisterCheckingRemoteServersCallback(CheckingRemoteServersCallback callback, void *arg);
+    </programlisting>
+     Only functions that return <type>ForeignServer*</type> can be
+     registered as callback functions. Please set to <literal>void* arg</literal>
+     if you want to pass an argument. The returning value must be set as the argument
+     of following enable and disable fucntions.
+     If you have problems with the health check results and want to abort the transaction,
+     please return the pointer of downed server as <type>ForeignServer*</type>.
+    </para>
+    <para>
+     Note that starting or stopping the periodic execution is FDW's responsibility.
+     If you want to start verification, the following function must be performed
+     after registering callback functions:
+     <programlisting>
+int
+TryEnableRemoteServerCheckingTimeout(CheckingRemoteServersCallbackItem *item)
+     </programlisting>
+     If you want to stop, the following function must be performed:
+     <programlisting>
+int
+TryDisableRemoteServerCheckingTimeout(CheckingRemoteServersCallbackItem *item)
+     </programlisting>
+    </para>
+   </sect1>
+
+
  </chapter>
