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 8676183b159c12afae108216a2ae94ed57a8a61a..b44aaaa6feef89af9af27fb38c2bb75854d1c6cb 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,9 @@ 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,22 +95,13 @@ public class ServletUtil {
   /**
    * Reset executors on AWS Lambda SnapStart restore
    */
-  // 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() {
+  static void resetExecutors() {
     CALC_EXECUTOR.shutdown();
     TASK_EXECUTOR.shutdown();
+
+    CALC_EXECUTOR =
+        MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT));
+    TASK_EXECUTOR = Executors.newSingleThreadExecutor();
   }
 
   static void model(HazardModel model) {
@@ -120,11 +112,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 54234fa443f000a1511fecebf8f59db64de9546f..1d7c49c58a2f408c68fd0057062ffbdfe64bed69 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,14 +109,11 @@ 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);
-      var response = DisaggService.getDisaggRp(request);
-      ServletUtil.shutdownExecutors();
-      return response;
+      return DisaggService.getDisaggRp(request);
     } 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 30fd865a0bad98e2e0bea93ebce7315a0e3de138..15c4de0d62f79441ff0542301824af19d44e893a 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,13 +103,10 @@ 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);
-      var response = HazardService.getHazard(request);
-      ServletUtil.shutdownExecutors();
-      return response;
+      return HazardService.getHazard(request);
     } 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 489dbc519fcb3e071c111099a3a399948971e200..1ad8fa730622f2cf06cfbbceb64b6a522d5d2fcf 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,12 +86,9 @@ public class RateController {
           minimum = "0.01",
           maximum = "1000") @PathVariable double distance) {
     try {
-      ServletUtil.startExecutors();
       RateService.Request request = new RateService.Request(
           http, longitude, latitude, distance);
-      var response = RateService.getRate(request);
-      ServletUtil.shutdownExecutors();
-      return response;
+      return RateService.getRate(request);
     } catch (Exception e) {
       return ServletUtil.error(
           RateService.LOG, e,