我已经在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>
这里非常具体我的问题是子弹形式:
谢谢!
答案 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 doc,SO Question Ans