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()));