diff --git a/src/backend/postmaster/checkpointer.c b/src/backend/postmaster/checkpointer.c
index fca78fa4ef..74e9b9373a 100644
--- a/src/backend/postmaster/checkpointer.c
+++ b/src/backend/postmaster/checkpointer.c
@@ -488,6 +488,7 @@ CheckpointerMain(void)
 
 		/* Send WAL statistics to the stats collector. */
 		pgstat_send_wal(true);
+		pgstat_send_buffer_actions();
 
 		/*
 		 * If any checkpoint flags have been set, redo the loop to handle the
@@ -566,6 +567,7 @@ HandleCheckpointerInterrupts(void)
 		ShutdownXLOG(0, 0);
 		pgstat_send_checkpointer();
 		pgstat_send_wal(true);
+		pgstat_send_buffer_actions();
 
 		/* Normal exit from the checkpointer is here */
 		proc_exit(0);			/* done */
@@ -707,6 +709,7 @@ CheckpointWriteDelay(int flags, double progress)
 		 * Report interim activity statistics.
 		 */
 		pgstat_send_checkpointer();
+		pgstat_send_buffer_actions();
 
 		/*
 		 * This sleep used to be connected to bgwriter_delay, typically 200ms.
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 74e1d32766..f2d29336e1 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -3116,10 +3116,7 @@ pgstat_send_buffer_actions(void)
 	pgstat_setheader(&BufferActionsStats.m_hdr, PGSTAT_MTYPE_BUFFER_ACTIONS);
 	pgstat_send(&BufferActionsStats, sizeof(BufferActionsStats));
 
-	/*
-	 * pgstat_send_buffer_actions() is only called before a backend exits, so
-	 * BufferActionsStats should not be reused.
-	 */
+	MemSet(&BufferActionsStats, 0, sizeof(BufferActionsStats));
 }
 
 /* ----------
diff --git a/src/backend/utils/activity/backend_status.c b/src/backend/utils/activity/backend_status.c
index 6f1e1c30d2..477e73340d 100644
--- a/src/backend/utils/activity/backend_status.c
+++ b/src/backend/utils/activity/backend_status.c
@@ -474,6 +474,7 @@ pgstat_beshutdown_hook(int code, Datum arg)
 	beentry->st_procpid = 0;	/* mark invalid */
 
 	PGSTAT_END_WRITE_ACTIVITY(beentry);
+	pgstat_send_buffer_actions();
 
 	/* so that functions can check if backend_status.c is up via MyBEEntry */
 	MyBEEntry = NULL;
