diff -Nacr a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
*** a/src/backend/postmaster/pgstat.c	2016-09-20 05:17:08.000000000 +0900
--- b/src/backend/postmaster/pgstat.c	2016-09-28 11:43:22.000000000 +0900
***************
*** 248,253 ****
--- 248,254 ----
  #endif
  
  NON_EXEC_STATIC void PgstatCollectorMain(int argc, char *argv[]) pg_attribute_noreturn();
+ static void pgstat_quickdie(SIGNAL_ARGS);
  static void pgstat_exit(SIGNAL_ARGS);
  static void pgstat_beshutdown_hook(int code, Datum arg);
  static void pgstat_sighup_handler(SIGNAL_ARGS);
***************
*** 3475,3487 ****
  
  	/*
  	 * Ignore all signals usually bound to some action in the postmaster,
! 	 * except SIGHUP and SIGQUIT.  Note we don't need a SIGUSR1 handler to
! 	 * support latch operations, because we only use a local latch.
  	 */
  	pqsignal(SIGHUP, pgstat_sighup_handler);
  	pqsignal(SIGINT, SIG_IGN);
! 	pqsignal(SIGTERM, SIG_IGN);
! 	pqsignal(SIGQUIT, pgstat_exit);
  	pqsignal(SIGALRM, SIG_IGN);
  	pqsignal(SIGPIPE, SIG_IGN);
  	pqsignal(SIGUSR1, SIG_IGN);
--- 3476,3488 ----
  
  	/*
  	 * Ignore all signals usually bound to some action in the postmaster,
! 	 * except SIGHUP, SIGTERM and SIGQUIT.  Note we don't need a SIGUSR1
! 	 * handler to support latch operations, because we only use a local latch.
  	 */
  	pqsignal(SIGHUP, pgstat_sighup_handler);
  	pqsignal(SIGINT, SIG_IGN);
! 	pqsignal(SIGTERM, pgstat_exit);
! 	pqsignal(SIGQUIT, pgstat_quickdie);
  	pqsignal(SIGALRM, SIG_IGN);
  	pqsignal(SIGPIPE, SIG_IGN);
  	pqsignal(SIGUSR1, SIG_IGN);
***************
*** 3505,3511 ****
  	pgStatDBHash = pgstat_read_statsfiles(InvalidOid, true, true);
  
  	/*
! 	 * Loop to process messages until we get SIGQUIT or detect ungraceful
  	 * death of our parent postmaster.
  	 *
  	 * For performance reasons, we don't want to do ResetLatch/WaitLatch after
--- 3506,3512 ----
  	pgStatDBHash = pgstat_read_statsfiles(InvalidOid, true, true);
  
  	/*
! 	 * Loop to process messages until we get SIGTERM or detect ungraceful
  	 * death of our parent postmaster.
  	 *
  	 * For performance reasons, we don't want to do ResetLatch/WaitLatch after
***************
*** 3524,3530 ****
  		ResetLatch(MyLatch);
  
  		/*
! 		 * Quit if we get SIGQUIT from the postmaster.
  		 */
  		if (need_exit)
  			break;
--- 3525,3531 ----
  		ResetLatch(MyLatch);
  
  		/*
! 		 * Quit if we get SIGTERM from the postmaster.
  		 */
  		if (need_exit)
  			break;
***************
*** 3720,3725 ****
--- 3721,3734 ----
  
  /* SIGQUIT signal handler for collector process */
  static void
+ pgstat_quickdie(SIGNAL_ARGS)
+ {
+ 	PG_SETMASK(&BlockSig);
+ 	exit(1);
+ }
+ 
+ /* SIGTERM signal handler for collector process */
+ static void
  pgstat_exit(SIGNAL_ARGS)
  {
  	int			save_errno = errno;
diff -Nacr a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
*** a/src/backend/postmaster/postmaster.c	2016-09-20 05:17:08.000000000 +0900
--- b/src/backend/postmaster/postmaster.c	2016-09-28 11:43:22.000000000 +0900
***************
*** 2866,2872 ****
  				 * nothing left for it to do.
  				 */
  				if (PgStatPID != 0)
! 					signal_child(PgStatPID, SIGQUIT);
  			}
  			else
  			{
--- 2866,2872 ----
  				 * nothing left for it to do.
  				 */
  				if (PgStatPID != 0)
! 					signal_child(PgStatPID, SIGTERM);
  			}
  			else
  			{
