diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/PrimingResource.java b/src/main/java/gov/usgs/earthquake/nshmp/www/PrimingResource.java
index 27e36f1f44028463008651453e842f9223888f0d..668000317467ebe6cc361cc4d594a5d5a0704ee3 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/PrimingResource.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/PrimingResource.java
@@ -54,7 +54,7 @@ public class PrimingResource implements OrderedResource {
   @Override
   public void afterRestore(Context<? extends Resource> context) throws Exception {
     // Reset executors on restore as Shutdown event does not fire on AWS lambda
-    ServletUtil.resetExecutors();
+    // ServletUtil.resetExecutors();
   }
 
   private static AwsProxyRequest getAwsProxyRequest(String path) {
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java
index 5f75c7c280d85548f3a875cd6d89ceb6be164c48..8676183b159c12afae108216a2ae94ed57a8a61a 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/ServletUtil.java
@@ -67,8 +67,8 @@ public class ServletUtil {
 
   static {
     THREAD_COUNT = getRuntime().availableProcessors();
-    CALC_EXECUTOR = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT));
-    TASK_EXECUTOR = Executors.newSingleThreadExecutor();
+    // CALC_EXECUTOR = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT));
+    // TASK_EXECUTOR = Executors.newSingleThreadExecutor();
     GSON = new GsonBuilder()
         .registerTypeAdapter(Imt.class, new WsUtils.EnumSerializer<Imt>())
         .registerTypeAdapter(ValueFormat.class, new WsUtils.EnumSerializer<ValueFormat>())
@@ -94,14 +94,24 @@ public class ServletUtil {
   /**
    * Reset executors on AWS Lambda SnapStart restore
    */
-  static void resetExecutors() {
-    CALC_EXECUTOR.shutdown();
-    TASK_EXECUTOR.shutdown();
+  // static void resetExecutors() {
+  //   CALC_EXECUTOR.shutdown();
+  //   TASK_EXECUTOR.shutdown();
 
+  //   CALC_EXECUTOR = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT));
+  //   TASK_EXECUTOR = Executors.newSingleThreadExecutor();
+  // }
+
+  public static void startExecutors() {
     CALC_EXECUTOR = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT));
     TASK_EXECUTOR = Executors.newSingleThreadExecutor();
   }
 
+  public static void shutdownExecutors() {
+    CALC_EXECUTOR.shutdown();
+    TASK_EXECUTOR.shutdown();
+  }
+
   static void model(HazardModel model) {
     HAZARD_MODEL = model;
   }
@@ -110,11 +120,11 @@ public class ServletUtil {
     return HAZARD_MODEL;
   }
 
-  @EventListener
-  void shutdown(ShutdownEvent event) {
-    CALC_EXECUTOR.shutdown();
-    TASK_EXECUTOR.shutdown();
-  }
+  // @EventListener
+  // void shutdown(ShutdownEvent event) {
+  //   CALC_EXECUTOR.shutdown();
+  //   TASK_EXECUTOR.shutdown();
+  // }
 
   @EventListener
   void startup(StartupEvent event) {
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java
index 1d7c49c58a2f408c68fd0057062ffbdfe64bed69..54234fa443f000a1511fecebf8f59db64de9546f 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/DisaggController.java
@@ -109,11 +109,14 @@ public class DisaggController {
       @QueryValue @Nullable Set<Imt> imt,
       @QueryValue @Nullable Set<DisaggDataType> out) {
     try {
+      ServletUtil.startExecutors();
       Set<Imt> imts = HazardService.readImts(http);
       Set<DataType> dataTypes = HazardService.readDataTypes(http);
       DisaggService.RequestRp request = new DisaggService.RequestRp(
           http, longitude, latitude, vs30, imts, returnPeriod, dataTypes);
-      return DisaggService.getDisaggRp(request);
+      var response = DisaggService.getDisaggRp(request);
+      ServletUtil.shutdownExecutors();
+      return response;
     } catch (Exception e) {
       return ServletUtil.error(
           DisaggService.LOG, e,
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java
index 15c4de0d62f79441ff0542301824af19d44e893a..30fd865a0bad98e2e0bea93ebce7315a0e3de138 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/hazard/HazardController.java
@@ -103,10 +103,13 @@ public class HazardController {
           defaultValue = "false") @Nullable Boolean maxdir,
       @QueryValue @Nullable Set<Imt> imt) {
     try {
+      ServletUtil.startExecutors();
       Set<Imt> imts = HazardService.readImts(http);
       HazardService.Request request = new HazardService.Request(
           http, longitude, latitude, vs30, imts, truncate, maxdir);
-      return HazardService.getHazard(request);
+      var response = HazardService.getHazard(request);
+      ServletUtil.shutdownExecutors();
+      return response;
     } catch (Exception e) {
       return ServletUtil.error(
           HazardService.LOG, e,
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java
index 1ad8fa730622f2cf06cfbbceb64b6a522d5d2fcf..489dbc519fcb3e071c111099a3a399948971e200 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/RateController.java
@@ -86,9 +86,12 @@ public class RateController {
           minimum = "0.01",
           maximum = "1000") @PathVariable double distance) {
     try {
+      ServletUtil.startExecutors();
       RateService.Request request = new RateService.Request(
           http, longitude, latitude, distance);
-      return RateService.getRate(request);
+      var response = RateService.getRate(request);
+      ServletUtil.shutdownExecutors();
+      return response;
     } catch (Exception e) {
       return ServletUtil.error(
           RateService.LOG, e,