JBoss EAP 6.3 Http 连接器设置

JBoss EAP 6.3 Http Connector Settings

我研究 Google 已经有一段时间了,以了解服务器如何接受 http 请求并处理它们。如果我理解正确的话,端口 8080 上应该有一个监听器,它始终监听传入的 http 请求,并且一旦它收到请求,它应该能够创建一个线程并将工作委托给该线程。

根据以上知识,我想了解的是在设置 http-connector 时什么是 max-connections 和 max-threads。另外,如果我们没有明确指定这些,那么最大值是多少?

    <subsystem xmlns="urn:jboss:domain:web:2.1" default-virtual-server="default-host" native="false">
        <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
        <virtual-server name="default-host" enable-welcome-root="true">
            <alias name="localhost"/>
            <alias name="example.com"/>
        </virtual-server>
    </subsystem>

非常具体,这里是我的项目符号形式的问题:

谢谢!

max-connections: 服务器在任何给定时间将接受和处理的最大连接数。

如果 max-connections 属性没有在 standalone-(*) 的 web 子系统连接器上设置。xml / domain.xml,默认计算为:

512 * Runtime.getRuntime().availableProcessors() //for default Java connector
32 * Runtime.getRuntime().availableProcessors() //for native APR connector addon

max-threads:这个Connector要创建的请求处理线程的最大数量,因此决定了可以同时处理的最大请求数。

EAP 6.x:

/**
 * Maximum amount of worker threads.
 */
protected int maxThreads = (org.apache.tomcat.util.Constants.LOW_MEMORY) ? 64 : ((Constants.MAX_THREADS == -1) ? 512 * Runtime.getRuntime().availableProcessors() : Constants.MAX_THREADS);
public void setMaxThreads(int maxThreads) { this.maxThreads = maxThreads; }
public int getMaxThreads() { return maxThreads; }

EAP 6.x 带有本机组件:

/**
 * Maximum amount of worker threads.
 */
protected int maxThreads = (org.apache.tomcat.util.Constants.LOW_MEMORY) ? 32 : ((Constants.MAX_THREADS == -1) ? 32 * Runtime.getRuntime().availableProcessors() : Constants.MAX_THREADS);
public void setMaxThreads(int maxThreads) { this.maxThreads = maxThreads; }
public int getMaxThreads() { return maxThreads; }

我相信两者是一样的。我从未使用过 max-connections 属性。每当需要自定义最大线程数时,我都会创建单独的线程工厂和线程池。有关详细信息,请参阅: redhat doc,