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 <jian....@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()));

Reply via email to