如果有任何请求在tomcat线程池中创建更多线程怎么办

用户名

假设Tomcat支持最多5个线程,并且5个线程正在进行中(假设这些请求将花费很多时间)。现在,请求中的1个创建了另外2个执行某项操作的线程,

  1. 所以这2个线程将获得CPU或等待?
  2. 如果他们等待,他们是否在操作系统队列中等待?(acceptConnection队列)
内森·休斯(Nathan Hughes)

这是maxThreads的文档

服务器在任何给定时间将接受和处理的最大连接数。达到此数目后,服务器将接受但不处理另一个连接。在处理的连接数降至maxConnections以下之前,该附加连接将被阻止,此时服务器将再次开始接受和处理新的连接。请注意,一旦达到限制,操作系统仍然可以基于acceptCount设置接受连接。默认值因连接器类型而异。对于BIO,除非使用执行程序,否则默认值为maxThreads的值,在这种情况下,默认值为执行程序的maxThreads的值。对于NIO,默认值为10000。对于APR / native,默认值为8192。

线程限制是为Tomcat用于分配给传入请求的内部池配置的最大数量。这不是对JVM使用的线程数的硬限制。

如果您的请求new Thread()在其工作过程中创建了更多线程(调用),则这些线程不是来自缓冲池,而是从操作系统中请求的。

但是最好的方法可能是使用单独的专用线程池。您始终可以配置自己的线程池,并让您的请求从该池中获取线程。这样一来,您就不会使系统运行在线程不足的情况下(如果无法控制并且线程开始挂起,您可能会冒险创建新线程),并且不会降低Tomcat的服务请求能力(如果您使用的是Tomcat的池)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果有人掌握了您的公共IP地址,该怎么办?

安装Windows时,如果有多个分区该怎么办?

如果一个库不是多线程的怎么办?

是否可以在 Rust 标准库中找到所有智能指针的列表?如果有怎么办?

如果有多个正则表达式与其余输入的前缀匹配,该怎么办?

如果有人在我打开文件后覆盖了文件,该怎么办?

如果有不同数量的命令行参数怎么办?我如何在 C 中处理它?

如果正在等待的线程自行分离怎么办?

如果违反了Swing的线程策略,该怎么办?

如果执行同步方法的线程挂起怎么办?

nodejs单线程?如果有大量并发请求,它如何工作

如果没有IO线程来处理异步结果怎么办?

汇总扫描-如果有大量线程,则结果错误

如果有人在我要求最后一个插入ID之前将新数据插入数据库,该怎么办?

Task.Run(Action) 是否启动一个新的线程 id 线程池中没有更多线程?

如果 Django 在我请求时没有发送任何电子邮件,我该怎么办?

如果条件变量向锁定线程发出信号怎么办?

Haskell中的并发性:如果单线程但设置了+ RTS -N怎么办

Java应用服务器能够破坏线程吗?如果是,怎么办?

如果线程在调用pthread_join之前退出,该怎么办

存储库模式似乎缺乏范围。如果我有更多要查询怎么办?

MPI +线程并行化与仅MPI相比有什么优势(如果有)?

如果有人在java中失败,如何停止所有线程?

如果有GIL,为什么我们需要线程锁?

如果有一个线程,异步任务如何说它们“完成”了?

如果有许多客户端连接,Netty线程模型如何工作?

QMutex,如果有线程在功能中,请在这里等待

gtkmm线程安全队列绘制怎么办?

ActiveMQ OutOfMemory无法创建更多线程