tomcat默认连接数

默认是200。

下面看一下详细的配置:

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8080"
minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000 " useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

解释:

1、MaxProcessors是tomcat能够处理的最大线程数,默认是200.

2、acceptCount一般是>=MaxProcessors,比如是250,表示只有200个在处理,但是还可以接受额外的50个线程,在排队。如果超过250,则直接丢弃。

下面是官方描述:

其中,maxThreads的介绍如下:

The maximum number of request processing threads to be created by this Connector, which therefore determines the maximum number of simultaneous requests that can be handled. If not specified, this attribute is set to 200. If an executor is associated with this connector, this attribute is ignored as the connector will execute tasks using the executor rather than an internal thread pool.

而acceptCount的介绍为:

The maximum queue length for incoming connection requests when all possible request processing threads are in use. Any requests received when the queue is full will be refused. The default value is 100.

所以两者的默认值分别是200和100。

一个示例配置如下:

<Connector port="8080" protocol="HTTP/1.1"   
           connectionTimeout="20000"   
           redirectPort="8443" acceptCount="500" maxThreads="400" />  

参考文献

 

转载于:https://my.oschina.net/windows20/blog/1580523

### 如何在 Tomcat 中查看当前连接数 #### 使用 JMX 获取连接池状态 通过 Java Management Extensions (JMX),可以监控 Tomcat 的运行状态,包括数据库连接池的当前活动连接数Tomcat 提供了一个名为 `org.apache.tomcat.jdbc.pool` 或者 `org.apache.commons.dbcp.BasicDataSource` 的 MBean 来暴露这些指标。可以通过调用 `getNumActive()` 方法获取当前活跃的数据库连接数量[^2]。 以下是具体实现方式: 1. **启用 JMX 支持** 修改 Tomcat 启动脚本(如 catalina.sh 或 catalina.bat),添加以下 JVM 参数以启用远程 JMX 访问: ```bash JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9010" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false" ``` 2. **使用工具访问 JMX 数据** 可以利用 jconsole、VisualVM 或其他支持 JMX 的客户端工具连接到 Tomcat 实例,并导航至对应的 MBeans 属性页面查找 `numActive` 字段。 #### 配置管理用户权限 为了能够成功访问 JMX 接口或者 Web 应用程序中的管理功能,需先设置具有管理员角色的用户账户。编辑 `$TOMCAT_HOME/conf/tomcat-users.xml` 文件,在 `<tomcat-users>` 节点下新增如下条目[^3]: ```xml <role rolename="manager-gui"/> <user username="admin" password="password" roles="manager-gui"/> ``` 完成此操作之后记得重启服务使更改生效。 #### 利用 Servlet API 动态查询 除了借助外部手段外,也可以编写自定义 servlet 来展示实时统计信息。下面给出一段简单的例子用于演示如何读取 BasicDataSource 对象上的 numActive 值: ```java import org.apache.commons.dbcp2.BasicDataSource; public class ConnectionPoolStatusServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/MyDB"); if(ds instanceof BasicDataSource){ BasicDataSource bds = (BasicDataSource)ds; int activeConnections = bds.getNumActive(); // 当前正在使用的连接数目 PrintWriter out = response.getWriter(); out.println("<html><body>"); out.printf("Number of Active Connections : %d",activeConnections); out.println("</body></html>"); } } } ``` 注意这里假设数据源已经在 context.xml 定义好并映射到了 web.xml 上作为资源引用。 #### 关于线程与等待队列的关系 另外值得注意的是,除了关注数据库层面的连接情况之外,还需要考虑 HTTP 请求处理过程中涉及到的工作线程分配机制以及请求排队现象。默认情况下,Tomcat 的 BIO 模型会为每一个新到来的 socket 创建一个新的线程去执行业务逻辑直到结束;而当并发量超过设定的最大线程限制(maxThreads)时,则多余的请求会被放入 acceptor queue 中等候处理机会——该队列长度由 attribute 'acceptCount' 控制,默认值通常设为 100[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值