You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ta...@apache.org on 2020/07/22 07:50:44 UTC

[skywalking] 01/01: support jetty custom advanced configuration.

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

tanjian pushed a commit to branch jetty_config
in repository https://gitbox.apache.org/repos/asf/skywalking.git

commit fa369c3825eb963c0705ba6f6d3952a2b3d56e7d
Author: JaredTan95 <ji...@daocloud.io>
AuthorDate: Wed Jul 22 15:50:10 2020 +0800

    support jetty custom advanced configuration.
---
 .../src/main/resources/application.yml             |  5 +++
 .../oap/server/core/CoreModuleProvider.java        |  3 +-
 .../server/library/server/jetty/JettyServer.java   | 37 ++++++++++++++-----
 .../library/server/jetty/JettyServerConfig.java    | 42 ++++++++++------------
 .../sharing/server/SharingServerConfig.java        |  6 ++++
 .../server/SharingServerModuleProvider.java        | 41 +++++++++++++--------
 .../receiver/zipkin/ZipkinReceiverProvider.java    |  2 +-
 7 files changed, 86 insertions(+), 50 deletions(-)

diff --git a/oap-server/server-bootstrap/src/main/resources/application.yml b/oap-server/server-bootstrap/src/main/resources/application.yml
index 352fbd7..b684ca1 100755
--- a/oap-server/server-bootstrap/src/main/resources/application.yml
+++ b/oap-server/server-bootstrap/src/main/resources/application.yml
@@ -160,6 +160,11 @@ receiver-sharing-server:
   selector: ${SW_RECEIVER_SHARING_SERVER:default}
   default:
     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:
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..4974d6e 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
@@ -200,8 +200,7 @@ public class CoreModuleProvider extends ModuleProvider {
         grpcServer.initialize();
 
         jettyServer = new JettyServer(
-                moduleConfig.getRestHost(), moduleConfig.getRestPort(), moduleConfig.getRestContextPath(), moduleConfig
-                .getJettySelectors());
+            moduleConfig.getRestHost(), moduleConfig.getRestPort(), moduleConfig.getRestContextPath(), null);
         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..9fc6cef 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;
 
@@ -35,19 +37,23 @@ public class JettyServer implements Server {
     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(JettyServerConfig config) {
+        this(config.getHost(), config.getPort(), config.getContextPath(), config);
     }
 
-    public JettyServer(String host, int port, String contextPath, int selectorNum) {
+    public JettyServer(String host, int port, String contextPath, JettyServerConfig config) {
         this.host = host;
         this.port = port;
         this.contextPath = contextPath;
-        this.selectorNum = selectorNum;
+        this.jettyServerConfig = Objects.isNull(config) ? JettyServerConfig.builder()
+                                                                           .host(host)
+                                                                           .port(port)
+                                                                           .contextPath(contextPath)
+                                                                           .build() : config;
     }
 
     @Override
@@ -62,7 +68,19 @@ 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(host);
+        connector.setPort(port);
+        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);
@@ -98,8 +116,9 @@ public class JettyServer implements Server {
                                                                                               .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());
                     }
                 }
             }
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..25a41b2 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
@@ -31,6 +31,12 @@ public class SharingServerConfig extends ModuleConfig {
      */
     private int restPort;
     private String restContextPath;
+    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..99d41c4 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,26 +68,38 @@ 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());
-            jettyServer.initialize();
+        JettyServerConfig jettyServerConfig = JettyServerConfig.builder()
+                                                               .host(config.getRestHost()).port(config.getRestPort())
+                                                               .contextPath(config.getRestContextPath())
+                                                               .jettyMinThreads(config.getJettyMinThreads())
+                                                               .jettyMaxThreads(config.getJettyMaxThreads())
+                                                               .jettyAcceptQueueSize(config.getJettyAcceptQueueSize())
+                                                               .jettyAcceptorPriorityDelta(config.getJettyAcceptorPriorityDelta())
+                                                               .jettyIdleTimeOut(config.getJettyIdleTimeOut()).build();
 
-            this.registerServiceImplementation(JettyHandlerRegister.class, new JettyHandlerRegisterImpl(jettyServer));
-        } else {
-            this.receiverJettyHandlerRegister = new ReceiverJettyHandlerRegister();
-            this.registerServiceImplementation(JettyHandlerRegister.class, receiverJettyHandlerRegister);
+        if (config.getRestPort() != 0) {
+            jettyServerConfig.setHost(Strings.isBlank(config.getRestHost()) ? "0.0.0.0" : config.getRestHost());
+            jettyServerConfig.setPort(config.getRestPort());
+            jettyServerConfig.setContextPath(config.getRestContextPath());
         }
+        jettyServer = new JettyServer(jettyServerConfig);
+        jettyServer.initialize();
+
+        this.registerServiceImplementation(JettyHandlerRegister.class, new JettyHandlerRegisterImpl(jettyServer));
 
         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/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..6aea954 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
@@ -64,7 +64,7 @@ public class ZipkinReceiverProvider extends ModuleProvider {
 
     @Override
     public void start() throws ServiceNotProvidedException, ModuleStartException {
-        jettyServer = new JettyServer(config.getHost(), config.getPort(), config.getContextPath());
+        jettyServer = new JettyServer(config.getHost(), config.getPort(), config.getContextPath(), null);
         jettyServer.initialize();
 
         jettyServer.addHandler(new SpanV1JettyHandler(config, getManager()));