From efd680c8b2d1eac3f1010deabb4fa8adead3c1c8 Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Wed, 12 May 2021 19:00:53 -0700 Subject: [PATCH 1/2] Reduce DefaultPooledConnectionIdleTimeout default - Change DefaultPooledConnectionIdleTimeout from 120 seconds to 110 seconds - This should reduce the occurrence of socket errors when connected to IIS or Kestrel --- src/libraries/Common/src/System/Net/Http/HttpHandlerDefaults.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Common/src/System/Net/Http/HttpHandlerDefaults.cs b/src/libraries/Common/src/System/Net/Http/HttpHandlerDefaults.cs index 537519288734b4..1a8c45e11aae0e 100644 --- a/src/libraries/Common/src/System/Net/Http/HttpHandlerDefaults.cs +++ b/src/libraries/Common/src/System/Net/Http/HttpHandlerDefaults.cs @@ -25,7 +25,7 @@ internal static partial class HttpHandlerDefaults public const bool DefaultUseDefaultCredentials = false; public const bool DefaultCheckCertificateRevocationList = false; public static readonly TimeSpan DefaultPooledConnectionLifetime = Timeout.InfiniteTimeSpan; - public static readonly TimeSpan DefaultPooledConnectionIdleTimeout = TimeSpan.FromMinutes(2); + public static readonly TimeSpan DefaultPooledConnectionIdleTimeout = TimeSpan.FromSeconds(110); public static readonly TimeSpan DefaultExpect100ContinueTimeout = TimeSpan.FromSeconds(1); public static readonly TimeSpan DefaultConnectTimeout = Timeout.InfiniteTimeSpan; } From e2b167430461b39e0ff59c72a08565cf1657ef7f Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Thu, 13 May 2021 09:50:41 -0700 Subject: [PATCH 2/2] Update DefaultPooledConnectionIdleTimeout to 1 minute - Fix tests --- .../Common/src/System/Net/Http/HttpHandlerDefaults.cs | 2 +- .../tests/FunctionalTests/SocketsHttpHandlerTest.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libraries/Common/src/System/Net/Http/HttpHandlerDefaults.cs b/src/libraries/Common/src/System/Net/Http/HttpHandlerDefaults.cs index 1a8c45e11aae0e..3bf335ec33cea4 100644 --- a/src/libraries/Common/src/System/Net/Http/HttpHandlerDefaults.cs +++ b/src/libraries/Common/src/System/Net/Http/HttpHandlerDefaults.cs @@ -25,7 +25,7 @@ internal static partial class HttpHandlerDefaults public const bool DefaultUseDefaultCredentials = false; public const bool DefaultCheckCertificateRevocationList = false; public static readonly TimeSpan DefaultPooledConnectionLifetime = Timeout.InfiniteTimeSpan; - public static readonly TimeSpan DefaultPooledConnectionIdleTimeout = TimeSpan.FromSeconds(110); + public static readonly TimeSpan DefaultPooledConnectionIdleTimeout = TimeSpan.FromMinutes(1); public static readonly TimeSpan DefaultExpect100ContinueTimeout = TimeSpan.FromSeconds(1); public static readonly TimeSpan DefaultConnectTimeout = Timeout.InfiniteTimeSpan; } diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/SocketsHttpHandlerTest.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/SocketsHttpHandlerTest.cs index 2cd7cf7da781a7..895afedc9c31f7 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/SocketsHttpHandlerTest.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/SocketsHttpHandlerTest.cs @@ -1774,7 +1774,7 @@ public void PooledConnectionIdleTimeout_GetSet_Roundtrips() { using (var handler = new SocketsHttpHandler()) { - Assert.Equal(TimeSpan.FromMinutes(2), handler.PooledConnectionIdleTimeout); + Assert.Equal(TimeSpan.FromMinutes(1), handler.PooledConnectionIdleTimeout); handler.PooledConnectionIdleTimeout = Timeout.InfiniteTimeSpan; Assert.Equal(Timeout.InfiniteTimeSpan, handler.PooledConnectionIdleTimeout); @@ -1957,7 +1957,7 @@ await Assert.ThrowsAnyAsync(() => Assert.Equal(int.MaxValue, handler.MaxConnectionsPerServer); Assert.Equal(64, handler.MaxResponseHeadersLength); Assert.False(handler.PreAuthenticate); - Assert.Equal(TimeSpan.FromMinutes(2), handler.PooledConnectionIdleTimeout); + Assert.Equal(TimeSpan.FromMinutes(1), handler.PooledConnectionIdleTimeout); Assert.Equal(Timeout.InfiniteTimeSpan, handler.PooledConnectionLifetime); Assert.NotNull(handler.Properties); Assert.Null(handler.Proxy);