This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch multi-protocol
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit edd9d79b5e6d1459c41dddc611a8f877cb9ae7e9
Author: liubao68 <[email protected]>
AuthorDate: Tue Aug 29 19:37:51 2023 +0800

    [SCB-2805]change default settings for http keepalive timeout and idle 
timeout (#3927)
---
 .../vertx/client/http/HttpClientOptionsSPI.java    |  8 +++-
 .../rest/client/TransportClientConfig.java         | 45 ++++++++--------------
 .../rest/client/TestTransportClientConfig.java     |  4 +-
 .../transport/rest/vertx/RestServerVerticle.java   | 10 ++++-
 .../transport/rest/vertx/TransportConfig.java      |  9 ++++-
 5 files changed, 39 insertions(+), 37 deletions(-)

diff --git 
a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/client/http/HttpClientOptionsSPI.java
 
b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/client/http/HttpClientOptionsSPI.java
index 86aaa5564..92a84e67f 100644
--- 
a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/client/http/HttpClientOptionsSPI.java
+++ 
b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/client/http/HttpClientOptionsSPI.java
@@ -40,7 +40,7 @@ public interface HttpClientOptionsSPI {
   boolean enabled();
 
   /* config tag is used for group configurations, like ssl, address resolver, 
etc. set config tag to distinguish
-  *  other clients configuration or read the common configuration. */
+   *  other clients configuration or read the common configuration. */
   String getConfigTag();
 
   /* for config modules, the configuration is not ready, need set up config 
reader */
@@ -85,6 +85,7 @@ public interface HttpClientOptionsSPI {
   int getHttp2MaxPoolSize();
 
   boolean isUseAlpn();
+
   /*****************  proxy settings ***************************/
   boolean isProxyEnable();
 
@@ -105,12 +106,13 @@ public interface HttpClientOptionsSPI {
     httpClientOptions.setProtocolVersion(spi.getHttpVersion());
     httpClientOptions.setConnectTimeout(spi.getConnectTimeoutInMillis());
     httpClientOptions.setIdleTimeout(spi.getIdleTimeoutInSeconds());
+    httpClientOptions.setReadIdleTimeout(spi.getIdleTimeoutInSeconds());
+    httpClientOptions.setWriteIdleTimeout(spi.getIdleTimeoutInSeconds());
     httpClientOptions.setTryUseCompression(spi.isTryUseCompression());
     httpClientOptions.setMaxWaitQueueSize(spi.getMaxWaitQueueSize());
     httpClientOptions.setMaxPoolSize(spi.getMaxPoolSize());
     httpClientOptions.setKeepAlive(spi.isKeepAlive());
     httpClientOptions.setMaxHeaderSize(spi.getMaxHeaderSize());
-    httpClientOptions.setKeepAliveTimeout(spi.getKeepAliveTimeout());
 
     if (spi.isProxyEnable()) {
       ProxyOptions proxy = new ProxyOptions();
@@ -128,6 +130,8 @@ public interface HttpClientOptionsSPI {
       
httpClientOptions.setHttp2MultiplexingLimit(spi.getHttp2MultiplexingLimit());
       httpClientOptions.setHttp2MaxPoolSize(spi.getHttp2MaxPoolSize());
       httpClientOptions.setHttp2KeepAliveTimeout(spi.getKeepAliveTimeout());
+    } else {
+      httpClientOptions.setKeepAliveTimeout(spi.getKeepAliveTimeout());
     }
 
     if (spi.isSsl()) {
diff --git 
a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
 
b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
index 4172d1878..542955859 100644
--- 
a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
+++ 
b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
@@ -22,9 +22,12 @@ import 
org.apache.servicecomb.transport.common.TransportConfigUtils;
 import com.netflix.config.DynamicPropertyFactory;
 
 import io.vertx.core.http.HttpClientOptions;
-import io.vertx.core.net.TCPSSLOptions;
 
 public final class TransportClientConfig {
+  private static final int DEFAULT_IDLE_TIME_OUT = 150;
+
+  private static final int DEFAULT_KEEP_ALIVE_TIME_OUT = 60;
+
   private TransportClientConfig() {
   }
 
@@ -46,12 +49,6 @@ public final class TransportClientConfig {
         .get();
   }
 
-  public static int getHttp2ConnectionIdleTimeoutInSeconds() {
-    return DynamicPropertyFactory.getInstance()
-        .getIntProperty("servicecomb.rest.client.http2.idleTimeoutInSeconds", 
TCPSSLOptions.DEFAULT_IDLE_TIMEOUT)
-        .get();
-  }
-
   public static boolean getUseAlpn() {
     return DynamicPropertyFactory.getInstance()
         .getBooleanProperty("servicecomb.rest.client.http2.useAlpnEnabled", 
true)
@@ -71,9 +68,15 @@ public final class TransportClientConfig {
         .get();
   }
 
+  public static int getHttp2ConnectionIdleTimeoutInSeconds() {
+    return DynamicPropertyFactory.getInstance()
+        
.getIntProperty("servicecomb.rest.client.http2.connection.idleTimeoutInSeconds",
 DEFAULT_IDLE_TIME_OUT)
+        .get();
+  }
+
   public static int getConnectionIdleTimeoutInSeconds() {
     return DynamicPropertyFactory.getInstance()
-        
.getIntProperty("servicecomb.rest.client.connection.idleTimeoutInSeconds", 30)
+        
.getIntProperty("servicecomb.rest.client.connection.idleTimeoutInSeconds", 
DEFAULT_IDLE_TIME_OUT)
         .get();
   }
 
@@ -84,35 +87,17 @@ public final class TransportClientConfig {
   }
 
   public static int getConnectionKeepAliveTimeoutInSeconds() {
-    int result = DynamicPropertyFactory.getInstance()
+    return DynamicPropertyFactory.getInstance()
         
.getIntProperty("servicecomb.rest.client.connection.keepAliveTimeoutInSeconds",
-            -1)
+            DEFAULT_KEEP_ALIVE_TIME_OUT)
         .get();
-    if (result >= 0) {
-      return result;
-    }
-    result = getConnectionIdleTimeoutInSeconds();
-    if (result > 1) {
-      // a bit shorter than ConnectionIdleTimeoutInSeconds
-      return result - 1;
-    }
-    return result;
   }
 
   public static int getHttp2ConnectionKeepAliveTimeoutInSeconds() {
-    int result = DynamicPropertyFactory.getInstance()
+    return DynamicPropertyFactory.getInstance()
         
.getIntProperty("servicecomb.rest.client.http2.connection.keepAliveTimeoutInSeconds",
-            -1)
+            DEFAULT_KEEP_ALIVE_TIME_OUT)
         .get();
-    if (result >= 0) {
-      return result;
-    }
-    result = getHttp2ConnectionIdleTimeoutInSeconds();
-    if (result > 1) {
-      // a bit shorter than ConnectionIdleTimeoutInSeconds
-      return result - 1;
-    }
-    return result;
   }
 
   public static boolean getConnectionCompression() {
diff --git 
a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/TestTransportClientConfig.java
 
b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/TestTransportClientConfig.java
index 10f43c23c..4409e2979 100644
--- 
a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/TestTransportClientConfig.java
+++ 
b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/TestTransportClientConfig.java
@@ -48,7 +48,7 @@ public class TestTransportClientConfig {
 
   @Test
   public void getConnectionIdleTimeoutInSeconds() {
-    Assertions.assertEquals(30, 
TransportClientConfig.getConnectionIdleTimeoutInSeconds());
+    Assertions.assertEquals(150, 
TransportClientConfig.getConnectionIdleTimeoutInSeconds());
   }
 
   @Test
@@ -63,7 +63,7 @@ public class TestTransportClientConfig {
 
   @Test
   public void getHttp2ConnectionIdleTimeoutInSeconds() {
-    Assertions.assertEquals(0, 
TransportClientConfig.getHttp2ConnectionIdleTimeoutInSeconds());
+    Assertions.assertEquals(150, 
TransportClientConfig.getHttp2ConnectionIdleTimeoutInSeconds());
   }
 
   @Test
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
index 4de3e0db1..1c6120f61 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
@@ -250,7 +250,6 @@ public class RestServerVerticle extends AbstractVerticle {
 
   private HttpServerOptions createDefaultHttpServerOptions() {
     HttpServerOptions serverOptions = new HttpServerOptions();
-    
serverOptions.setIdleTimeout(TransportConfig.getConnectionIdleTimeoutInSeconds());
     serverOptions.setCompressionSupported(TransportConfig.getCompressed());
     serverOptions.setMaxHeaderSize(TransportConfig.getMaxHeaderSize());
     
serverOptions.setMaxFormAttributeSize(TransportConfig.getMaxFormAttributeSize());
@@ -258,10 +257,13 @@ public class RestServerVerticle extends AbstractVerticle {
     serverOptions.setMaxChunkSize(TransportConfig.getMaxChunkSize());
     
serverOptions.setDecompressionSupported(TransportConfig.getDecompressionSupported());
     
serverOptions.setDecoderInitialBufferSize(TransportConfig.getDecoderInitialBufferSize());
-    
serverOptions.setHttp2ConnectionWindowSize(TransportConfig.getHttp2ConnectionWindowSize());
     
serverOptions.setMaxInitialLineLength(TransportConfig.getMaxInitialLineLength());
     if (endpointObject.isHttp2Enabled()) {
       serverOptions.setUseAlpn(TransportConfig.getUseAlpn())
+          
.setHttp2ConnectionWindowSize(TransportConfig.getHttp2ConnectionWindowSize())
+          
.setIdleTimeout(TransportConfig.getHttp2ConnectionIdleTimeoutInSeconds())
+          
.setReadIdleTimeout(TransportConfig.getHttp2ConnectionIdleTimeoutInSeconds())
+          
.setWriteIdleTimeout(TransportConfig.getHttp2ConnectionIdleTimeoutInSeconds())
           .setInitialSettings(new 
Http2Settings().setPushEnabled(TransportConfig.getPushEnabled())
               
.setMaxConcurrentStreams(TransportConfig.getMaxConcurrentStreams())
               .setHeaderTableSize(TransportConfig.getHttp2HeaderTableSize())
@@ -269,6 +271,10 @@ public class RestServerVerticle extends AbstractVerticle {
               .setMaxFrameSize(TransportConfig.getMaxFrameSize())
               .setMaxHeaderListSize(TransportConfig.getMaxHeaderListSize())
           );
+    } else {
+      
serverOptions.setIdleTimeout(TransportConfig.getConnectionIdleTimeoutInSeconds());
+      
serverOptions.setReadIdleTimeout(TransportConfig.getConnectionIdleTimeoutInSeconds());
+      
serverOptions.setWriteIdleTimeout(TransportConfig.getConnectionIdleTimeoutInSeconds());
     }
     if (endpointObject.isSslEnabled()) {
       SSLOptionFactory factory =
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/TransportConfig.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/TransportConfig.java
index 28665acce..6e7f229b0 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/TransportConfig.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/TransportConfig.java
@@ -32,7 +32,7 @@ import io.vertx.core.http.Http2Settings;
 import io.vertx.core.http.HttpServerOptions;
 
 public final class TransportConfig {
-  public static final int DEFAULT_SERVER_CONNECTION_IDLE_TIMEOUT_SECOND = 60;
+  public static final int DEFAULT_SERVER_CONNECTION_IDLE_TIMEOUT_SECOND = 180;
 
   public static final boolean DEFAULT_SERVER_COMPRESSION_SUPPORT = false;
 
@@ -103,6 +103,13 @@ public final class TransportConfig {
         .get();
   }
 
+  public static int getHttp2ConnectionIdleTimeoutInSeconds() {
+    return DynamicPropertyFactory.getInstance()
+        
.getIntProperty("servicecomb.rest.server.http2.connection.idleTimeoutInSeconds",
+            DEFAULT_SERVER_CONNECTION_IDLE_TIMEOUT_SECOND)
+        .get();
+  }
+
   public static boolean getCompressed() {
     return DynamicPropertyFactory.getInstance()
         .getBooleanProperty("servicecomb.rest.server.compression", 
DEFAULT_SERVER_COMPRESSION_SUPPORT)

Reply via email to