diff --git a/http/http2_connection.hpp b/http/http2_connection.hpp
index df41ff6..7b90ff3 100644
--- a/http/http2_connection.hpp
+++ b/http/http2_connection.hpp
@@ -113,9 +113,23 @@
         BMCWEB_LOG_DEBUG("send_server_connection_header()");
 
         uint32_t maxStreams = 4;
-        std::array<nghttp2_settings_entry, 2> iv = {
-            {{NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, maxStreams},
-             {NGHTTP2_SETTINGS_ENABLE_PUSH, 0}}};
+
+        // Both of these settings were found experimentally to allow a single
+        // fast stream to upload at a rate equivalent to http1.1  They will
+        // likely be tuned in the future.
+        uint32_t maxFrameSize = 1 << 14;
+        uint32_t windowSize = 1 << 20;
+        std::array<nghttp2_settings_entry, 4> iv = {{
+            {NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, maxStreams},
+            {NGHTTP2_SETTINGS_ENABLE_PUSH, 0},
+            // Set an approximately 1MB window size
+            {NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE, windowSize},
+            {NGHTTP2_SETTINGS_MAX_FRAME_SIZE, maxFrameSize},
+        }};
+        if (ngSession.setLocalWindowSize(NGHTTP2_FLAG_NONE, 0, 1 << 20) != 0)
+        {
+            BMCWEB_LOG_ERROR("Failed to set local window size");
+        }
         int rv = ngSession.submitSettings(iv);
         if (rv != 0)
         {
@@ -365,7 +379,7 @@
         nghttp2_session* /* session */, uint8_t flags, int32_t streamId,
         const uint8_t* data, size_t len, void* userData)
     {
-        BMCWEB_LOG_DEBUG("on_frame_recv_callback");
+        BMCWEB_LOG_DEBUG("onDataChunkRecvStatic");
         if (userData == nullptr)
         {
             BMCWEB_LOG_CRITICAL("user data was null?");
@@ -398,7 +412,8 @@
                                          const nghttp2_frame* frame,
                                          void* userData)
     {
-        BMCWEB_LOG_DEBUG("on_frame_recv_callback");
+        BMCWEB_LOG_DEBUG("on_frame_recv_callback.  Frame type {}",
+                         static_cast<int>(frame->hd.type));
         if (userData == nullptr)
         {
             BMCWEB_LOG_CRITICAL("user data was null?");
@@ -533,6 +548,11 @@
             BMCWEB_LOG_DEBUG("create stream for id {}", frame.hd.stream_id);
 
             streams[frame.hd.stream_id];
+            if (ngSession.setLocalWindowSize(
+                    NGHTTP2_FLAG_NONE, frame.hd.stream_id, 16384 * 32) != 0)
+            {
+                BMCWEB_LOG_ERROR("Failed to set local window size");
+            }
         }
         return 0;
     }
