diff --git a/fe/src/main/java/org/apache/doris/common/Config.java b/fe/src/main/java/org/apache/doris/common/Config.java index 718532dc497471..ba3074e9063fa5 100644 --- a/fe/src/main/java/org/apache/doris/common/Config.java +++ b/fe/src/main/java/org/apache/doris/common/Config.java @@ -215,6 +215,21 @@ public class Config extends ConfigBase { * Currently, all FEs' http port must be same. */ @ConfField public static int http_port = 8030; + + /* + * The backlog_num for netty http server + * When you enlarge this backlog_num, you should ensure it's value larger than + * the linux /proc/sys/net/core/somaxconn config + */ + @ConfField public static int http_backlog_num = 1024; + + /* + * The backlog_num for thrift server + * When you enlarge this backlog_num, you should ensure it's value larger than + * the linux /proc/sys/net/core/somaxconn config + */ + @ConfField public static int thrift_backlog_num = 1024; + /* * FE thrift server port */ diff --git a/fe/src/main/java/org/apache/doris/common/ThriftServer.java b/fe/src/main/java/org/apache/doris/common/ThriftServer.java index 94cfcc99671b12..4a53660c8f7d9e 100644 --- a/fe/src/main/java/org/apache/doris/common/ThriftServer.java +++ b/fe/src/main/java/org/apache/doris/common/ThriftServer.java @@ -34,6 +34,7 @@ import org.apache.thrift.transport.TTransportException; import java.io.IOException; +import java.net.InetSocketAddress; import java.util.Set; public class ThriftServer { @@ -69,10 +70,15 @@ private void createThreadedServer() throws TTransportException { } private void createThreadPoolServer() throws TTransportException { - TThreadPoolServer.Args args = - new TThreadPoolServer.Args(new TServerSocket(port)).protocolFactory( + TServerSocket.ServerSocketTransportArgs socketTransportArgs = new TServerSocket.ServerSocketTransportArgs() + .bindAddr(new InetSocketAddress(port)) + .clientTimeout(0) + .backlog(Config.thrift_backlog_num); + + TThreadPoolServer.Args serverArgs = + new TThreadPoolServer.Args(new TServerSocket(socketTransportArgs)).protocolFactory( new TBinaryProtocol.Factory()).processor(processor); - server = new TThreadPoolServer(args); + server = new TThreadPoolServer(serverArgs); } public void start() throws IOException { diff --git a/fe/src/main/java/org/apache/doris/http/HttpServer.java b/fe/src/main/java/org/apache/doris/http/HttpServer.java index d67a1968d71449..bd43848dc92e64 100644 --- a/fe/src/main/java/org/apache/doris/http/HttpServer.java +++ b/fe/src/main/java/org/apache/doris/http/HttpServer.java @@ -17,6 +17,7 @@ package org.apache.doris.http; +import org.apache.doris.common.Config; import org.apache.doris.http.action.BackendAction; import org.apache.doris.http.action.HaAction; import org.apache.doris.http.action.HelpAction; @@ -88,7 +89,6 @@ public class HttpServer { private static final Logger LOG = LogManager.getLogger(HttpServer.class); - private static final int BACKLOG_NUM = 128; private QeService qeService = null; private int port; private ActionController controller; @@ -196,7 +196,7 @@ public void run() { EventLoopGroup workerGroup = new NioEventLoopGroup(); try { serverBootstrap = new ServerBootstrap(); - serverBootstrap.option(ChannelOption.SO_BACKLOG, BACKLOG_NUM); + serverBootstrap.option(ChannelOption.SO_BACKLOG, Config.http_backlog_num); serverBootstrap.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .childHandler(new PaloHttpServerInitializer());