diff --git a/test/cpp/qps/client_async.cc b/test/cpp/qps/client_async.cc
index 8c8d927d15fa5355e0cb56872634dc7f190d0bce..e1e44f9ac0da8566d387de66ab782c76c1d185bd 100644
--- a/test/cpp/qps/client_async.cc
+++ b/test/cpp/qps/client_async.cc
@@ -199,6 +199,15 @@ class AsyncClient : public Client {
         delete ClientRpcContext::detag(got_tag);
       }
     }
+    // Now clear out all the pre-allocated idle contexts
+    for (int ch = 0; ch < channel_count_; ch++) {
+      while (!contexts_[ch].empty()) {
+        // Get an idle context from the front of the list
+        auto* ctx = *(contexts_[ch].begin());
+        contexts_[ch].pop_front();
+        delete ctx;
+      }
+    }
   }
 
   bool ThreadFunc(Histogram* histogram,
diff --git a/test/cpp/qps/qps_test_openloop.cc b/test/cpp/qps/qps_test_openloop.cc
index 52873b2987e0a02543be7efe60432868e4cfed15..96a9b4504c9dc9739185e63f940539c945167db6 100644
--- a/test/cpp/qps/qps_test_openloop.cc
+++ b/test/cpp/qps/qps_test_openloop.cc
@@ -60,7 +60,7 @@ static void RunQPS() {
   client_config.set_rpc_type(UNARY);
   client_config.set_load_type(POISSON);
   client_config.mutable_load_params()->
-    mutable_poisson()->set_offered_load(10000.0);
+    mutable_poisson()->set_offered_load(1000.0);
 
   ServerConfig server_config;
   server_config.set_server_type(ASYNC_SERVER);