Tomcat性能调优

一、整体知识体系

二、调优实战

1、禁用ajp

对于tomcat10已经默认禁用了,但是对于10以下的版本需要手工禁用,ajp的漏洞大家可以自行去“国家信息安全共享平台"查看

2、启用线程池

(1)每个线程池都是一个线程,所以打开线程池可以提高性能

  (2)  修改配置文件: conf/server.xml 中的<Executor> 注释打开

打开线程池

 

 

连接器指定线程池

 

三、Tomcat运行模式

BIO:tomcat7之前默认的阻塞模式,性能低下(accept和read方法会阻塞),没有经过任何优化处理和支持,8.5版本以后已经抛弃该模式

NIO:同步非阻塞模式(解决了accept和read的阻塞问题,NIO模式下调用read方法一定会读到数据),tomcat内部实现了reactor线程模型,性能较高

NIO2:纯异步模式,tomcat内部实现了preactor线程模型

APR:安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度提高了性能

 

四、性能测试

本例是使用jmeter对应用服务器登录接口进行测试

未禁用AJP协议,未用线程池之前,并发场景下异常率较高,吞吐量很低,相应较长

禁用AJP之后,吞吐量有较大提高,但是异常率快速增长,多次测试,相差不是很大

加入NIO线程池后,异常率下降到0,吞吐量比原来快了6-8倍

附测试使用的server.xml截图:

 

五、Tomcat线程线程详解

1 main线程

(1) main线程是Tomcat的主要线程,其主要作用是通过启动包来对容器点火

(2) main的作用是把容器组件拉起来,然后阻塞在8005端口,等待关闭

2 localhost-startstop线程(Tomcat8)

(1) Tomcat采用层级异步启动,对于每一层级的组件都是采用startstop线程进行启动

(2) 当组件启动完成之后,那么该线程就退出了,生命周期仅仅限于此

3 AsyncFileHandleWriterandleWriter线程

主要作用是对接日志框架

4 ContainerBackgroundProcessor线程(Tomcat8)

(1) 主要负责实时扫描Tomcat容器的变化,在一些时刻触发某些事件,例如在热部署开启时reload工程等

(2) 扫描容器时按照层级递归扫描

5 Catalina-Utility 线程 (Tomcat9)

将Tomcat8中的ContainerBackground线程和startstop线程合二为一了

6 Accept线程

(1)Tomcat前端最外层的线程,负责统一接受socket请求

(2)Acceptor处理完之后的线程在nio 和 bio模式之间略有差异

其中,NIO的效率比BIO高是因为acceptor线程和exec线程之间多了一个pull线程在轮询,已经就绪的这些socket通道全部返回给你;pull线程里面调用的是IO多路复用,其意思就是每一个socket都会有数据,不会发生阻塞

7 ClientPoller线程(默认2个)

(1) nio模式中的特有线程,reactor模式的实现者

(2) 具体负责接收acceptor线程交接过来的事件,对事件轮询后交接给exec线程处理

8 exec线程

(1)Tomcat的主要工作线程,默认开启10个,接收poller线程丢过来的IO事件

(2)主要工作是http协议解析,攒出Request和response,然后调用Tomcat后端的容器

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

负责Servlet的输入和输出

10 AsyncTimeOut线程(Tomcat8)

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

11 其他线程

六 线程的分类

左侧是辅助线程,右边的4个线程是tomcat中最繁忙的4个线程,也是tomcat最重要的4个线程

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值