This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new 00317c70c [SCB-2805]change default settings for http keepalive timeout
and idle timeout (#3927) (#3935)
00317c70c is described below
commit 00317c70c17cbdd7f4ad2f2d2abf5ece60f1ca60
Author: liubao68 <[email protected]>
AuthorDate: Fri Sep 1 16:22:15 2023 +0800
[SCB-2805]change default settings for http keepalive timeout and idle
timeout (#3927) (#3935)
---
.../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)