Index: src/backend/postmaster/autovacuum.c
===================================================================
--- src/backend/postmaster/autovacuum.c	(HEAD)
+++ src/backend/postmaster/autovacuum.c	(autovacuum_naptime_overflow)
@@ -502,7 +502,15 @@
 										  INVALID_OFFSET, false);
 
 		/* Sleep for a while according to schedule */
-		pg_usleep(micros);
+		while (micros >= 10000000L)
+		{
+			if (got_SIGHUP || avlauncher_shutdown_request)
+				break;
+			pg_usleep(10000000L);
+			micros -= 10000000L;
+		}
+		if (!(got_SIGHUP || avlauncher_shutdown_request))
+			pg_usleep(micros);
 
 		/* the normal shutdown case */
 		if (avlauncher_shutdown_request)
@@ -709,7 +717,7 @@
 		usecs = 100000;	/* 100 ms */
 	}
 
-	return secs * 1000000 + usecs;
+	return (uint64) secs * 1000000 + usecs;
 }
 
 /*
Index: src/backend/utils/misc/guc.c
===================================================================
--- src/backend/utils/misc/guc.c	(HEAD)
+++ src/backend/utils/misc/guc.c	(autovacuum_naptime_overflow)
@@ -1645,7 +1645,7 @@
 			GUC_UNIT_S
 		},
 		&autovacuum_naptime,
-		60, 1, INT_MAX, NULL, NULL
+		60, 1, INT_MAX / 1000, NULL, NULL
 	},
 	{
 		{"autovacuum_vacuum_threshold", PGC_SIGHUP, AUTOVACUUM,
