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

georgew5656 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 9fe67958be9 Increase ServerConnector accept queue size (#15596)
9fe67958be9 is described below

commit 9fe67958be95f9d9fd88807046c2fe561c8665f5
Author: George Shiqi Wu <[email protected]>
AuthorDate: Fri Jan 5 12:04:15 2024 -0500

    Increase ServerConnector accept queue size (#15596)
    
    * Allow overwriting ServerConnector accept queue size
    
    * Use a single config
    
    * Fix spacing
    
    * fix spacing
    
    * fixed value
    
    * read value from environment
    
    * fix spacing
    
    * Unpack value before reading
    
    * check somaxconn on linux only
---
 .../initialization/jetty/JettyServerModule.java    | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git 
a/server/src/main/java/org/apache/druid/server/initialization/jetty/JettyServerModule.java
 
b/server/src/main/java/org/apache/druid/server/initialization/jetty/JettyServerModule.java
index 1e2bab20041..1299e11d60c 100644
--- 
a/server/src/main/java/org/apache/druid/server/initialization/jetty/JettyServerModule.java
+++ 
b/server/src/main/java/org/apache/druid/server/initialization/jetty/JettyServerModule.java
@@ -34,6 +34,7 @@ import com.google.inject.Scopes;
 import com.google.inject.multibindings.Multibinder;
 import com.sun.jersey.guice.JerseyServletModule;
 import com.sun.jersey.guice.spi.container.servlet.GuiceContainer;
+import org.apache.commons.lang3.SystemUtils;
 import org.apache.druid.guice.Jerseys;
 import org.apache.druid.guice.JsonConfigProvider;
 import org.apache.druid.guice.LazySingleton;
@@ -83,7 +84,10 @@ import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
 import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.security.KeyStore;
 import java.security.cert.CRL;
 import java.util.ArrayList;
@@ -339,6 +343,7 @@ public class JettyServerModule extends JerseyServletModule
       // workaround suggested in -
       // https://bugs.eclipse.org/bugs/show_bug.cgi?id=435322#c66 for jetty 
half open connection issues during failovers
       connector.setAcceptorPriorityDelta(-1);
+      connector.setAcceptQueueSize(getTCPAcceptQueueSize());
 
       List<ConnectionFactory> monitoredConnFactories = new ArrayList<>();
       for (ConnectionFactory cf : connector.getConnectionFactories()) {
@@ -491,6 +496,23 @@ public class JettyServerModule extends JerseyServletModule
     return numServerConnector * 8;
   }
 
+  private static int getTCPAcceptQueueSize()
+  {
+    if (SystemUtils.IS_OS_LINUX) {
+      try {
+        BufferedReader in = 
Files.newBufferedReader(Paths.get("/proc/sys/net/core/somaxconn"));
+        String acceptQueueSize = in.readLine();
+        if (acceptQueueSize != null) {
+          return Integer.parseInt(acceptQueueSize);
+        }
+      }
+      catch (Exception e) {
+        log.warn("Unable to read /proc/sys/net/core/somaxconn, falling back to 
default value for TCP accept queue size");
+      }
+    }
+    return 128; // Default value of net.core.somaxconn
+  }
+
   @Provides
   @LazySingleton
   public JettyMonitor getJettyMonitor(DataSourceTaskIdHolder 
dataSourceTaskIdHolder)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to