You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ke...@apache.org on 2020/07/25 09:42:00 UTC
[skywalking] branch master updated: Support Jetty server advanced
configuration. (#5147)
This is an automated email from the ASF dual-hosted git repository.
kezhenxu94 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new db9f8e6 Support Jetty server advanced configuration. (#5147)
db9f8e6 is described below
commit db9f8e6e008115d10ed8132b671e41229513beb7
Author: Jared Tan <ji...@daocloud.io>
AuthorDate: Sat Jul 25 17:41:49 2020 +0800
Support Jetty server advanced configuration. (#5147)
---
docs/en/setup/backend/backend-receivers.md | 59 ++++++++++++++++++----
docs/en/setup/backend/configuration-vocabulary.md | 5 ++
.../src/main/resources/application.yml | 17 +++++++
.../oap/server/core/CoreModuleConfig.java | 7 ++-
.../oap/server/core/CoreModuleProvider.java | 17 +++++--
.../server/library/server/jetty/JettyServer.java | 57 ++++++++++++---------
.../library/server/jetty/JettyServerConfig.java | 42 +++++++--------
.../sharing/server/SharingServerConfig.java | 12 +++--
.../server/SharingServerModuleProvider.java | 36 +++++++++----
.../receiver/zipkin/ZipkinReceiverConfig.java | 5 ++
.../receiver/zipkin/ZipkinReceiverProvider.java | 15 +++++-
11 files changed, 197 insertions(+), 75 deletions(-)
diff --git a/docs/en/setup/backend/backend-receivers.md b/docs/en/setup/backend/backend-receivers.md
index c61c71d..15b3972 100644
--- a/docs/en/setup/backend/backend-receivers.md
+++ b/docs/en/setup/backend/backend-receivers.md
@@ -18,25 +18,47 @@ We have following receivers, and `default` implementors are provided in our Apac
The sample settings of these receivers should be already in default `application.yml`, and also list here
```yaml
receiver-register:
+ selector: ${SW_RECEIVER_REGISTER:default}
default:
+
receiver-trace:
+ selector: ${SW_RECEIVER_TRACE:default}
default:
- sampleRate: ${SW_TRACE_SAMPLE_RATE:1000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
+ sampleRate: ${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
slowDBAccessThreshold: ${SW_SLOW_DB_THRESHOLD:default:200,mongodb:100} # The slow database access thresholds. Unit ms.
+
receiver-jvm:
+ selector: ${SW_RECEIVER_JVM:default}
default:
+
service-mesh:
+ selector: ${SW_SERVICE_MESH:default}
default:
+
istio-telemetry:
+ selector: ${SW_ISTIO_TELEMETRY:default}
default:
+
envoy-metric:
+ selector: ${SW_ENVOY_METRIC:default}
default:
+ acceptMetricsService: ${SW_ENVOY_METRIC_SERVICE:true}
+ alsHTTPAnalysis: ${SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS:""}
+
receiver_zipkin:
+ selector: ${SW_RECEIVER_ZIPKIN:-}
default:
- host: 0.0.0.0
- port: 9411
- contextPath: /
+ host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
+ port: ${SW_RECEIVER_ZIPKIN_PORT:9411}
+ contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
+ jettyMinThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MIN_THREADS:1}
+ jettyMaxThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MAX_THREADS:200}
+ jettyIdleTimeOut: ${SW_RECEIVER_ZIPKIN_JETTY_IDLE_TIMEOUT:30000}
+ jettyAcceptorPriorityDelta: ${SW_RECEIVER_ZIPKIN_JETTY_DELTA:0}
+ jettyAcceptQueueSize: ${SW_RECEIVER_ZIPKIN_QUEUE_SIZE:0}
+
receiver-profile:
+ selector: ${SW_RECEIVER_PROFILE:default}
default:
```
@@ -46,12 +68,16 @@ But the `receiver-sharing-server` module provide a way to make all receivers ser
different ip:port, if you set them explicitly.
```yaml
receiver-sharing-server:
+ selector: ${SW_RECEIVER_SHARING_SERVER:default}
default:
- restHost: ${SW_SHARING_SERVER_REST_HOST:0.0.0.0}
- restPort: ${SW_SHARING_SERVER_REST_PORT:12800}
- restContextPath: ${SW_SHARING_SERVER_REST_CONTEXT_PATH:/}
- gRPCHost: ${SW_SHARING_SERVER_GRPC_HOST:0.0.0.0}
- gRPCPort: ${SW_SHARING_SERVER_GRPC_PORT:11800}
+ host: ${SW_RECEIVER_JETTY_HOST:0.0.0.0}
+ contextPath: ${SW_RECEIVER_JETTY_CONTEXT_PATH:/}
+ authentication: ${SW_AUTHENTICATION:""}
+ jettyMinThreads: ${SW_RECEIVER_SHARING_JETTY_MIN_THREADS:1}
+ jettyMaxThreads: ${SW_RECEIVER_SHARING_JETTY_MAX_THREADS:200}
+ jettyIdleTimeOut: ${SW_RECEIVER_SHARING_JETTY_IDLE_TIMEOUT:30000}
+ jettyAcceptorPriorityDelta: ${SW_RECEIVER_SHARING_JETTY_DELTA:0}
+ jettyAcceptQueueSize: ${SW_RECEIVER_SHARING_JETTY_QUEUE_SIZE:0}
```
Notice, if you add these settings, make sure they are not as same as core module,
@@ -70,10 +96,16 @@ how to active.
Use following config to active.
```yaml
receiver_zipkin:
+ selector: ${SW_RECEIVER_ZIPKIN:-}
default:
host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
port: ${SW_RECEIVER_ZIPKIN_PORT:9411}
contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
+ jettyMinThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MIN_THREADS:1}
+ jettyMaxThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MAX_THREADS:200}
+ jettyIdleTimeOut: ${SW_RECEIVER_ZIPKIN_JETTY_IDLE_TIMEOUT:30000}
+ jettyAcceptorPriorityDelta: ${SW_RECEIVER_ZIPKIN_JETTY_DELTA:0}
+ jettyAcceptQueueSize: ${SW_RECEIVER_ZIPKIN_QUEUE_SIZE:0}
```
2. Analysis mode(Not production ready), receive Zipkin v1/v2 formats through HTTP service. Transform the trace to skywalking
@@ -83,11 +115,17 @@ because of Zipkin tag/endpoint value unpredictable, we can't make sure it fits p
Active `analysis mode`, you should set `needAnalysis` config.
```yaml
receiver_zipkin:
+ selector: ${SW_RECEIVER_ZIPKIN:-}
default:
host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
port: ${SW_RECEIVER_ZIPKIN_PORT:9411}
contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
- needAnalysis: true
+ jettyMinThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MIN_THREADS:1}
+ jettyMaxThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MAX_THREADS:200}
+ jettyIdleTimeOut: ${SW_RECEIVER_ZIPKIN_JETTY_IDLE_TIMEOUT:30000}
+ jettyAcceptorPriorityDelta: ${SW_RECEIVER_ZIPKIN_JETTY_DELTA:0}
+ jettyAcceptQueueSize: ${SW_RECEIVER_ZIPKIN_QUEUE_SIZE:0}
+ needAnalysis: true
```
NOTICE, Zipkin receiver is only provided in `apache-skywalking-apm-x.y.z.tar.gz` tar.
@@ -105,6 +143,7 @@ to get more details.
Active the receiver.
```yaml
receiver_jaeger:
+ selector: ${SW_RECEIVER_JAEGER:-}
default:
gRPCHost: ${SW_RECEIVER_JAEGER_HOST:0.0.0.0}
gRPCPort: ${SW_RECEIVER_JAEGER_PORT:14250}
diff --git a/docs/en/setup/backend/configuration-vocabulary.md b/docs/en/setup/backend/configuration-vocabulary.md
index e8b933a..51fc33a 100644
--- a/docs/en/setup/backend/configuration-vocabulary.md
+++ b/docs/en/setup/backend/configuration-vocabulary.md
@@ -7,6 +7,11 @@ core|default|role|Option values, `Mixed/Receiver/Aggregator`. **Receiver** mode
| - | - | restHost| Binding IP of restful service. Services include GraphQL query and HTTP data report|SW_CORE_REST_HOST|0.0.0.0|
| - | - | restPort | Binding port of restful service | SW_CORE_REST_PORT|12800|
| - | - | restContextPath| Web context path of restful service| SW_CORE_REST_CONTEXT_PATH|/|
+| - | - | restMinThreads| Min threads number of restful service| SW_CORE_REST_JETTY_MIN_THREADS|1|
+| - | - | restMaxThreads| Max threads number of restful service| SW_CORE_REST_JETTY_MAX_THREADS|200|
+| - | - | restIdleTimeOut| Connector idle timeout in milliseconds of restful service| SW_CORE_REST_JETTY_IDLE_TIMEOUT|30000|
+| - | - | restAcceptorPriorityDelta| Thread priority delta to give to acceptor threads of restful service| SW_CORE_REST_JETTY_DELTA|0|
+| - | - | restAcceptQueueSize| ServerSocketChannel backlog of restful service| SW_CORE_REST_JETTY_QUEUE_SIZE|0|
| - | - | gRPCHost|Binding IP of gRPC service. Services include gRPC data report and internal communication among OAP nodes|SW_CORE_GRPC_HOST|0.0.0.0|
| - | - | gRPCPort| Binding port of gRPC service | SW_CORE_GRPC_PORT|11800|
| - | - | gRPCSslEnabled| Activate SSL for gRPC service | SW_CORE_GRPC_SSL_ENABLED|false|
diff --git a/oap-server/server-bootstrap/src/main/resources/application.yml b/oap-server/server-bootstrap/src/main/resources/application.yml
index 3298303..c94bd1d 100755
--- a/oap-server/server-bootstrap/src/main/resources/application.yml
+++ b/oap-server/server-bootstrap/src/main/resources/application.yml
@@ -57,6 +57,11 @@ core:
restHost: ${SW_CORE_REST_HOST:0.0.0.0}
restPort: ${SW_CORE_REST_PORT:12800}
restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/}
+ restMinThreads: ${SW_CORE_REST_JETTY_MIN_THREADS:1}
+ restMaxThreads: ${SW_CORE_REST_JETTY_MAX_THREADS:200}
+ restIdleTimeOut: ${SW_CORE_REST_JETTY_IDLE_TIMEOUT:30000}
+ restAcceptorPriorityDelta: ${SW_CORE_REST_JETTY_DELTA:0}
+ restAcceptQueueSize: ${SW_CORE_REST_JETTY_QUEUE_SIZE:0}
gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0}
gRPCPort: ${SW_CORE_GRPC_PORT:11800}
gRPCSslEnabled: ${SW_CORE_GRPC_SSL_ENABLED:false}
@@ -156,7 +161,14 @@ storage:
receiver-sharing-server:
selector: ${SW_RECEIVER_SHARING_SERVER:default}
default:
+ host: ${SW_RECEIVER_JETTY_HOST:0.0.0.0}
+ contextPath: ${SW_RECEIVER_JETTY_CONTEXT_PATH:/}
authentication: ${SW_AUTHENTICATION:""}
+ jettyMinThreads: ${SW_RECEIVER_SHARING_JETTY_MIN_THREADS:1}
+ jettyMaxThreads: ${SW_RECEIVER_SHARING_JETTY_MAX_THREADS:200}
+ jettyIdleTimeOut: ${SW_RECEIVER_SHARING_JETTY_IDLE_TIMEOUT:30000}
+ jettyAcceptorPriorityDelta: ${SW_RECEIVER_SHARING_JETTY_DELTA:0}
+ jettyAcceptQueueSize: ${SW_RECEIVER_SHARING_JETTY_QUEUE_SIZE:0}
receiver-register:
selector: ${SW_RECEIVER_REGISTER:default}
default:
@@ -210,6 +222,11 @@ receiver_zipkin:
host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
port: ${SW_RECEIVER_ZIPKIN_PORT:9411}
contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
+ jettyMinThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MIN_THREADS:1}
+ jettyMaxThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MAX_THREADS:200}
+ jettyIdleTimeOut: ${SW_RECEIVER_ZIPKIN_JETTY_IDLE_TIMEOUT:30000}
+ jettyAcceptorPriorityDelta: ${SW_RECEIVER_ZIPKIN_JETTY_DELTA:0}
+ jettyAcceptQueueSize: ${SW_RECEIVER_ZIPKIN_QUEUE_SIZE:0}
receiver_jaeger:
selector: ${SW_RECEIVER_JAEGER:-}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
index 933024c..4682d40 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
@@ -30,8 +30,13 @@ public class CoreModuleConfig extends ModuleConfig {
private String nameSpace;
private String restHost;
private int restPort;
- private int jettySelectors = 1;
private String restContextPath;
+ private int restMinThreads = 1;
+ private int restMaxThreads = 200;
+ private long restIdleTimeOut = 30000;
+ private int restAcceptorPriorityDelta = 0;
+ private int restAcceptQueueSize = 0;
+
private String gRPCHost;
private int gRPCPort;
private boolean gRPCSslEnabled = false;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
index 555cddc..80521ca 100755
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
@@ -90,6 +90,7 @@ import org.apache.skywalking.oap.server.library.module.ServiceNotProvidedExcepti
import org.apache.skywalking.oap.server.library.server.ServerException;
import org.apache.skywalking.oap.server.library.server.grpc.GRPCServer;
import org.apache.skywalking.oap.server.library.server.jetty.JettyServer;
+import org.apache.skywalking.oap.server.library.server.jetty.JettyServerConfig;
import org.apache.skywalking.oap.server.library.util.ResourceUtils;
import org.apache.skywalking.oap.server.telemetry.TelemetryModule;
import org.apache.skywalking.oap.server.telemetry.api.TelemetryRelatedContext;
@@ -199,9 +200,19 @@ public class CoreModuleProvider extends ModuleProvider {
}
grpcServer.initialize();
- jettyServer = new JettyServer(
- moduleConfig.getRestHost(), moduleConfig.getRestPort(), moduleConfig.getRestContextPath(), moduleConfig
- .getJettySelectors());
+ JettyServerConfig jettyServerConfig = JettyServerConfig.builder()
+ .host(moduleConfig.getRestHost())
+ .port(moduleConfig.getRestPort())
+ .contextPath(moduleConfig.getRestContextPath())
+ .jettyIdleTimeOut(moduleConfig.getRestIdleTimeOut())
+ .jettyAcceptorPriorityDelta(
+ moduleConfig.getRestAcceptorPriorityDelta())
+ .jettyMinThreads(moduleConfig.getRestMinThreads())
+ .jettyMaxThreads(moduleConfig.getRestMaxThreads())
+ .jettyAcceptQueueSize(
+ moduleConfig.getRestAcceptQueueSize())
+ .build();
+ jettyServer = new JettyServer(jettyServerConfig);
jettyServer.initialize();
this.registerServiceImplementation(ConfigService.class, new ConfigService(moduleConfig));
diff --git a/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServer.java b/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServer.java
index 85d991e..48ab1fe 100644
--- a/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServer.java
+++ b/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServer.java
@@ -18,13 +18,15 @@
package org.apache.skywalking.oap.server.library.server.jetty;
-import java.net.InetSocketAddress;
import java.util.Objects;
import org.apache.skywalking.oap.server.library.server.Server;
import org.apache.skywalking.oap.server.library.server.ServerException;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.servlet.ServletMapping;
+import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,27 +34,17 @@ public class JettyServer implements Server {
private static final Logger logger = LoggerFactory.getLogger(JettyServer.class);
- private final String host;
- private final int port;
- private final String contextPath;
- private final int selectorNum;
private org.eclipse.jetty.server.Server server;
private ServletContextHandler servletContextHandler;
+ private JettyServerConfig jettyServerConfig;
- public JettyServer(String host, int port, String contextPath) {
- this(host, port, contextPath, -1);
- }
-
- public JettyServer(String host, int port, String contextPath, int selectorNum) {
- this.host = host;
- this.port = port;
- this.contextPath = contextPath;
- this.selectorNum = selectorNum;
+ public JettyServer(JettyServerConfig config) {
+ this.jettyServerConfig = config;
}
@Override
public String hostPort() {
- return host + ":" + port;
+ return jettyServerConfig.getHost() + ":" + jettyServerConfig.getPort();
}
@Override
@@ -62,17 +54,32 @@ public class JettyServer implements Server {
@Override
public void initialize() {
- server = new org.eclipse.jetty.server.Server(new InetSocketAddress(host, port));
+ QueuedThreadPool threadPool = new QueuedThreadPool();
+ threadPool.setMinThreads(jettyServerConfig.getJettyMinThreads());
+ threadPool.setMaxThreads(jettyServerConfig.getJettyMaxThreads());
+
+ server = new org.eclipse.jetty.server.Server(threadPool);
+
+ ServerConnector connector = new ServerConnector(server);
+ connector.setHost(jettyServerConfig.getHost());
+ connector.setPort(jettyServerConfig.getPort());
+ connector.setIdleTimeout(jettyServerConfig.getJettyIdleTimeOut());
+ connector.setAcceptorPriorityDelta(jettyServerConfig.getJettyAcceptorPriorityDelta());
+ connector.setAcceptQueueSize(jettyServerConfig.getJettyAcceptQueueSize());
+ server.setConnectors(new Connector[] {connector});
servletContextHandler = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
- servletContextHandler.setContextPath(contextPath);
- logger.info("http server root context path: {}", contextPath);
+ servletContextHandler.setContextPath(jettyServerConfig.getContextPath());
+ logger.info("http server root context path: {}", jettyServerConfig.getContextPath());
server.setHandler(servletContextHandler);
}
public void addHandler(JettyHandler handler) {
- logger.info("Bind handler {} into jetty server {}:{}", handler.getClass().getSimpleName(), host, port);
+ logger.info(
+ "Bind handler {} into jetty server {}:{}",
+ handler.getClass().getSimpleName(), jettyServerConfig.getHost(), jettyServerConfig.getPort()
+ );
ServletHolder servletHolder = new ServletHolder();
servletHolder.setServlet(handler);
@@ -91,15 +98,16 @@ public class JettyServer implements Server {
@Override
public void start() throws ServerException {
- logger.info("start server, host: {}, port: {}", host, port);
+ logger.info("start server, host: {}, port: {}", jettyServerConfig.getHost(), jettyServerConfig.getPort());
try {
if (logger.isDebugEnabled()) {
if (servletContextHandler.getServletHandler() != null && servletContextHandler.getServletHandler()
.getServletMappings() != null) {
for (ServletMapping servletMapping : servletContextHandler.getServletHandler()
.getServletMappings()) {
- logger.debug("jetty servlet mappings: {} register by {}", servletMapping.getPathSpecs(), servletMapping
- .getServletName());
+ logger.debug(
+ "jetty servlet mappings: {} register by {}", servletMapping.getPathSpecs(), servletMapping
+ .getServletName());
}
}
}
@@ -117,11 +125,12 @@ public class JettyServer implements Server {
if (o == null || getClass() != o.getClass())
return false;
JettyServer that = (JettyServer) o;
- return port == that.port && Objects.equals(host, that.host);
+ return jettyServerConfig.getPort() == that.jettyServerConfig.getPort() && Objects.equals(
+ jettyServerConfig.getHost(), that.jettyServerConfig.getHost());
}
@Override
public int hashCode() {
- return Objects.hash(host, port);
+ return Objects.hash(jettyServerConfig.getHost(), jettyServerConfig.getPort());
}
}
diff --git a/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServerConfig.java b/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServerConfig.java
index aee61ab..c6ca056 100644
--- a/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServerConfig.java
+++ b/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServerConfig.java
@@ -18,33 +18,27 @@
package org.apache.skywalking.oap.server.library.server.jetty;
-public abstract class JettyServerConfig {
+import lombok.Builder;
+import lombok.Getter;
+import lombok.Setter;
+
+@Setter
+@Getter
+@Builder
+public class JettyServerConfig {
private String host;
private int port;
private String contextPath;
- public String getHost() {
- return host;
- }
-
- public void setHost(String host) {
- this.host = host;
- }
-
- public int getPort() {
- return port;
- }
-
- public void setPort(int port) {
- this.port = port;
- }
-
- public String getContextPath() {
- return contextPath;
- }
-
- public void setContextPath(String contextPath) {
- this.contextPath = contextPath;
- }
+ @Builder.Default
+ private int jettyMinThreads = 1;
+ @Builder.Default
+ private int jettyMaxThreads = 200;
+ @Builder.Default
+ private long jettyIdleTimeOut = 30000;
+ @Builder.Default
+ private int jettyAcceptorPriorityDelta = 0;
+ @Builder.Default
+ private int jettyAcceptQueueSize = 0;
}
diff --git a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerConfig.java b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerConfig.java
index f64604c..252c4d1 100644
--- a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerConfig.java
+++ b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerConfig.java
@@ -25,12 +25,18 @@ import org.apache.skywalking.oap.server.library.module.ModuleConfig;
@Getter
@Setter
public class SharingServerConfig extends ModuleConfig {
- private String restHost;
+ private String host;
/**
* Only setting the real port(not 0) makes the jetty server online.
*/
- private int restPort;
- private String restContextPath;
+ private int port;
+ private String contextPath;
+ private int jettyMinThreads = 1;
+ private int jettyMaxThreads = 200;
+ private long jettyIdleTimeOut = 30000;
+ private int jettyAcceptorPriorityDelta = 0;
+ private int jettyAcceptQueueSize = 0;
+
private String gRPCHost;
/**
* Only setting the real port(not 0) makes the gRPC server online.
diff --git a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModuleProvider.java
index db0bc4b..5091b7b 100644
--- a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModuleProvider.java
+++ b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModuleProvider.java
@@ -36,6 +36,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleStartException;
import org.apache.skywalking.oap.server.library.server.ServerException;
import org.apache.skywalking.oap.server.library.server.grpc.GRPCServer;
import org.apache.skywalking.oap.server.library.server.jetty.JettyServer;
+import org.apache.skywalking.oap.server.library.server.jetty.JettyServerConfig;
public class SharingServerModuleProvider extends ModuleProvider {
@@ -67,9 +68,22 @@ public class SharingServerModuleProvider extends ModuleProvider {
@Override
public void prepare() {
- if (config.getRestPort() != 0) {
- jettyServer = new JettyServer(Strings.isBlank(config.getRestHost()) ? "0.0.0.0" : config.getRestHost(), config
- .getRestPort(), config.getRestContextPath());
+ JettyServerConfig jettyServerConfig = JettyServerConfig.builder()
+ .host(config.getHost()).port(config.getPort())
+ .contextPath(config.getContextPath())
+ .jettyMinThreads(config.getJettyMinThreads())
+ .jettyMaxThreads(config.getJettyMaxThreads())
+ .jettyAcceptQueueSize(config.getJettyAcceptQueueSize())
+ .jettyAcceptorPriorityDelta(
+ config.getJettyAcceptorPriorityDelta())
+ .jettyIdleTimeOut(config.getJettyIdleTimeOut()).build();
+
+ if (config.getPort() != 0) {
+ jettyServerConfig.setHost(Strings.isBlank(config.getHost()) ? "0.0.0.0" : config.getHost());
+ jettyServerConfig.setPort(config.getPort());
+ jettyServerConfig.setContextPath(config.getContextPath());
+
+ jettyServer = new JettyServer(jettyServerConfig);
jettyServer.initialize();
this.registerServiceImplementation(JettyHandlerRegister.class, new JettyHandlerRegisterImpl(jettyServer));
@@ -80,13 +94,17 @@ public class SharingServerModuleProvider extends ModuleProvider {
if (config.getGRPCPort() != 0) {
if (config.isGRPCSslEnabled()) {
- grpcServer = new GRPCServer(Strings.isBlank(config.getGRPCHost()) ? "0.0.0.0" : config.getGRPCHost(),
- config.getGRPCPort(),
- Paths.get(config.getGRPCSslCertChainPath()).toFile(),
- Paths.get(config.getGRPCSslKeyPath()).toFile());
+ grpcServer = new GRPCServer(
+ Strings.isBlank(config.getGRPCHost()) ? "0.0.0.0" : config.getGRPCHost(),
+ config.getGRPCPort(),
+ Paths.get(config.getGRPCSslCertChainPath()).toFile(),
+ Paths.get(config.getGRPCSslKeyPath()).toFile()
+ );
} else {
- grpcServer = new GRPCServer(Strings.isBlank(config.getGRPCHost()) ? "0.0.0.0" : config.getGRPCHost(),
- config.getGRPCPort());
+ grpcServer = new GRPCServer(
+ Strings.isBlank(config.getGRPCHost()) ? "0.0.0.0" : config.getGRPCHost(),
+ config.getGRPCPort()
+ );
}
if (config.getMaxMessageSize() > 0) {
grpcServer.setMaxMessageSize(config.getMaxMessageSize());
diff --git a/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/ZipkinReceiverConfig.java b/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/ZipkinReceiverConfig.java
index 0595303..f85e709 100644
--- a/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/ZipkinReceiverConfig.java
+++ b/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/ZipkinReceiverConfig.java
@@ -28,6 +28,11 @@ public class ZipkinReceiverConfig extends ModuleConfig {
private String host;
private int port;
private String contextPath;
+ private int jettyMinThreads = 1;
+ private int jettyMaxThreads = 200;
+ private long jettyIdleTimeOut = 30000;
+ private int jettyAcceptorPriorityDelta = 0;
+ private int jettyAcceptQueueSize = 0;
private int expireTime = 20;
private int maxCacheSize = 1_000_000;
private boolean needAnalysis = false;
diff --git a/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/ZipkinReceiverProvider.java b/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/ZipkinReceiverProvider.java
index f5a8a02..bfdafe6 100644
--- a/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/ZipkinReceiverProvider.java
+++ b/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/ZipkinReceiverProvider.java
@@ -26,6 +26,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleStartException;
import org.apache.skywalking.oap.server.library.module.ServiceNotProvidedException;
import org.apache.skywalking.oap.server.library.server.ServerException;
import org.apache.skywalking.oap.server.library.server.jetty.JettyServer;
+import org.apache.skywalking.oap.server.library.server.jetty.JettyServerConfig;
import org.apache.skywalking.oap.server.receiver.trace.module.TraceModule;
import org.apache.skywalking.oap.server.receiver.trace.provider.parser.ISegmentParserService;
import org.apache.skywalking.oap.server.receiver.zipkin.analysis.Receiver2AnalysisBridge;
@@ -64,7 +65,19 @@ public class ZipkinReceiverProvider extends ModuleProvider {
@Override
public void start() throws ServiceNotProvidedException, ModuleStartException {
- jettyServer = new JettyServer(config.getHost(), config.getPort(), config.getContextPath());
+ JettyServerConfig jettyServerConfig = JettyServerConfig.builder()
+ .host(config.getHost())
+ .port(config.getPort())
+ .contextPath(config.getContextPath())
+ .jettyIdleTimeOut(config.getJettyIdleTimeOut())
+ .jettyAcceptorPriorityDelta(
+ config.getJettyAcceptorPriorityDelta())
+ .jettyMinThreads(config.getJettyMinThreads())
+ .jettyMaxThreads(config.getJettyMaxThreads())
+ .jettyAcceptQueueSize(config.getJettyAcceptQueueSize())
+ .build();
+
+ jettyServer = new JettyServer(jettyServerConfig);
jettyServer.initialize();
jettyServer.addHandler(new SpanV1JettyHandler(config, getManager()));