gpt4 book ai didi

java - 增加tomcat 7中的并发连接数

转载 作者:搜寻专家 更新时间:2023-10-31 08:20:30 24 4
gpt4 key购买 nike

想知道如何增加 tomcat 7 中的并发连接数。我做了一些研究,并从 apache 文档中发现将值设置为 acceptCount、maxConnections 并增加 maxThreads 会做到这一点,但在尝试时,我只能提交1000 个请求中有 500 个请求。下面是我从 server.xml 文件中摘录的代码段 -

      <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="2000" acceptCount="1000" maxConnections="1000"
scheme="https" secure="true"
keystoreFile="certs/tomcat.keystore" keystorePass="xxxxxxxx"
clientAuth="false" sslProtocol="TLS" server="Apache" />

你能帮我找到摆脱这个问题的最好和最简单的方法吗?

谢谢,西里什。

最佳答案

创建大量线程1并接受大量请求并不意味着您的服务器将能够处理请求

如果您有 N 个线程并且只有 M 个物理处理器/内核,那么如果 M >= N,每个线程将获得 1 个处理器平均 M / N处理器如果M < N .假设您有 N 个请求,每个请求在 1 个线程上运行,并且每个请求需要 R秒数的 CPU 时间。平均耗时 T用于运行一个请求的是 T = Min(R, R * N / M) seconds .很明显,随着您增加 N ( Activity 线程数和 Activity 请求数)平均运行时间T每个单独的请求按比例增加。

除此之外,如果您有很多线程,它们都将使用内存,并且都将竞争访问共享数据结构……或数据库。所有这些额外的资源使用和争用正在以各种方式增加整个系统的开销。

因此,我怀疑正在发生的事情是,由于每个线程都尝试同时处理请求,所以时间 T开始接近客户端或服务器端请求超时。 (请注意,调度程序的变化无常等意味着任何给定请求的实际时间可能少于或多于平均时间。)当请求超时时,这反过来会降低请求的吞吐量已完成,因为对每个超时请求执行的工作(通常)被浪费了。


除非请求需要与缓慢的外部服务通信,否则我建议您将线程数减少到不超过 200 ... Tomcat 默认值2。我希望这会增加系统吞吐量。它不一定能让您处理在那段时间发起的所有 1000 个请求,但我预计它会增加成功处理的请求数。

1 - 事实上,将线程数增加到 1000 并不意味着您将能够接受 1000 个请求。如果您有数百个线程处于 RUNNABLE 状态,Tomcat 的监听器线程(调用 ServerSocket.accept() 的线程)很可能会出现 CPU 饥饿,无法跟上请求到达率。

2 - 您将需要对您的系统进行一些性能调整,但如果进一步降低性能,我也不会感到惊讶。这将取决于您的硬件、您的应用程序和(我预计)您的后端数据库。

关于java - 增加tomcat 7中的并发连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12600826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com