TOMCAT性能优化_十大线程


一. Main线程

  • main线程是tomcat的主要线程,其主要作用是通过启动包来对窗口进行点火
  • main的作用就是把窗口组件拉起来,然后阻塞在8005端口,等待关闭

二. startstop 线程 (tomcat 8)

  • tomcat 按照层次进行异步启动,对于每一层级的组件都是采用startStop线程进行启动,当组件启动完成之后,该线程也随之退出

三. AsyncFileHandleWriter 线程

  • 该线程是用于异步文件处理的,它的做用是在Tomcat级别构架出一个输出框架,而后不一样的日志系统均可以对接这个框架,由于日志对于服务器来讲,是很是重要的功能。

四. ContainerBackgroudProcessor线程(tomcat 8)

  • 主要负责实时扫描Tomcat窗口的变化,在一些时刻触发某些事件,例如在热部署开启时reload工程等
  • 扫描容器时按照层级递归扫描

Catalina-Utility线程(tomcat 9)

  • 将tomcat中的ContainerBackgroudProcessor线程和startStop线程合二为一了

五. Acceptor线程

  • tomcat前端最外层的线程,负责统一接收socket请求
  • Acceptor处理完之后的交接线程在bio和nio模式中略有差异

六. ClientPoller线程(默认2个)

  • nio模式中的特有线程,reactor模式的实现者
  • 具体负责接收acceptor线程交接过来的事件,对事件轮询后交接给exec线程处理

七. exec线程(默认10个)

  • tomcat的主要工作线程,默认开启10个,接收poller线程丢过来的io事件
  • 主要工作是http协议解析,攒出Request和Response, 然后调用Tomcat后端的容器

八. NioBlockingSelector.BlockPoller线程(默认2个)

  • 负责Servlet的输入和输出

九. AsyncTimeout线程(默认2个)(tomcat 8)

  • 主要作用检测异步request请求时,触发超时,并将该请求转发到工作线程池处理

十. 其他线程

  • 例如ajp相关线程,sendfile相关线程等等,tomcat需要众多线程相互合作才能完美的发挥功能。线程并不是越多越好,而是要合理的控制线程,最终达到最优性能