当前位置: 首页 > 面试题库 >

Tomcat-maxThreads与maxConnections

昌山
2023-03-14
问题内容

在Tomcat中server.xmlmaxThreadsmaxConnections

我了解这maxConnections是服务器打开的连接数

并且maxThreads是请求处理线程的最大数量

但是两个配置参数如何协同工作,显然您不会将其设置maxConnections为1000和maxThreads10

这两个配置参数之间是什么关系?

<Connector 
    port="8443" 
    protocol="org.apache.coyote.http11.Http11Protocol"
    maxThreads="250" 
    SSLEnabled="true" 
    scheme="https" secure="true"
    clientAuth="false" 
    sslProtocol="TLS" 
    connectiontimeout="20000"
/>

问题答案:

Tomcat可以在两种模式下工作:

  • BIO –阻止I / O(每个连接一个线程)
  • NIO –非阻塞I / O(连接多于线程)

默认情况下,Tomcat
7
是BIO,尽管共识似乎是“不要使用Bio,因为Nio在各个方面都更好”。您可以使用文件中的protocol参数进行设置server.xml

  • 生物将是HTTP/1.1org.apache.coyote.http11.Http11Protocol
  • NIO将是 org.apache.coyote.http11.Http11NioProtocol

如果您使用的是BIO,那么我相信它们应该大致相同。

如果您使用的是NIO,则实际上“ maxConnections = 1000”和“ maxThreads =
10”甚至可能是合理的。默认值为maxConnections = 10,000和maxThreads =
200。使用NIO,每个线程可以提供任意数量的连接,来回切换但保留连接,因此您无需执行所有通常的握手操作,这对于HTTPS而言特别耗时,但对于HTTP而言却是一个问题。您可以调整“
keepAlive”参数以保持较长的连接时间,这样可以加快所有操作。



 类似资料:
  • 在Tomcat中,与是什么 我知道是打开到服务器的连接数 而是请求处理线程的最大数目

  • 设置可同时存在的线程的最大数目。 #MaxThreads Value 参数 值 可以同时存在的最大 线程 数. 指定大于 255 的数字相当于指定 255 (在 1.0.48 之前的版本中, 此限制为 20). 备注 此设置是全局的, 这意味着只需要使用一次 (在脚本的任意位置) 就会影响整个脚本. 尽管可以把这个值设置为 1, 但不建议这么做, 因为这样每当脚本显示 MsgBox 或其他对话框时

  • null 我知道web HTTP请求配置在大多数情况下与数据库池配置无关,但是对于属性之间的比例(maxthreads/acceptcount、maxActive)是否有常见的情况/实践?例如。HTTP maxThreads比DB maxActive大是一种常见的做法吗(但是根据我们的示例,认为100%大是太多了--可以假设20%或50%的最大值?),假设我们有一个更大的值的accpetCount

  • 我有个问题。apache camel文档指出,camel-restlet组件(从2.10版本开始)可以定义为请求服务的最大线程数(http://camel.apache.org/restlet.html)。 错误是什么?

  • 我是新来的tomcat/axis2.我已经安装和测试tomcat单独和正常工作。但是当我把tomcat和axis2遇到这个错误。有人能帮帮我吗? java.lang.NoClassDefFoundError: org/apache/ws/共用/模式/解析器/URIResolver atorg.apache.axis2.deployment.ModuleDeployer.deploy(ModuleD

  • 我正在尝试使用Application Insight来连接tomcat java Web应用程序。我正在阅读这本指南:https://docs.microsoft.com/azure/azure-monitor/app/java-standalone-arguments,但我不知道应该首先做什么。是否可以在不更改应用程序代码的情况下添加监控?我要完成集成的步骤是什么?

  • 我有一个基本的REST web服务可以工作,但我确实有一个问题。下面是一个简短的代码片段。

  • Tomcat JDBC连接池提供了几个测试连接的选项。我觉得更有趣的两个是和。 首先,我认为是最好的选择,因为它基本上是在将连接提供给应用程序之前验证连接(最大频率由定义)。 但是过了一会儿,我意识到在使用连接之前测试它可能会影响应用程序的响应性。因此,我认为使用可以更有效,因为它在不使用连接时测试连接。 另一方面,我很惊讶不适用于,而且我并不真正理解的用途。