JBoss EAP 6.3 Http连接器设置

时间:2015-06-12 04:50:03

标签: tomcat jboss

我已经在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-connection =可以同时处理http请求的最大http侦听器吗?
  • max-threads =在内部线程池中创建的最大线程,http侦听器将该工作委派给它?
  • 使用上面提到的默认http连接器设置,max-connections和max-threads
  • 的默认值是什么
  • 设置max-connections和max-threads的决定因素是,它取决于处理器数量和可用内存吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

如果未在独立 - (*)。xml / domain.xml中的Web子系统连接器上设置max-connections属性,则默认值计算为:

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

max-threads:此连接器要创建的最大请求处理线程数,因此确定了可以处理的最大并发请求数。

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 with Native组件:

/**
 * 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 docSO Question Ans