互联网架构-Tomcat8深度源码分析-059:站在微服务架构情况下优化Tomcat8

1 站在微服务架构情况下优化Tomcat

课程内容:
1.为什么需要站在微服务架构情况优化Tomcat
2.Tomcat8配置如何实现优化
3.Tomcat8如何实现JVM参数调优
4.Spring内嵌入Tomat是如何实现优化的

2 为什么需要站在微服务情况下优化Tomcat

Tomcat性能优化
分析场景: 站在微服务架构角度优化分析Tomcat
微服务架构中后端开发人员不需要编写视图层代码
编写http协议接口 前后分离(视图层代码 后台接口)
传统项目
com.mayikt.controller
com.mayikt.service
com.mayikt.dao

Tomcat性能优化分为两个思想:
1.内嵌入
SpringBoot的开发不需要外部tomcat服务,因为本身内嵌入tomcat;
2.外部形式
早期的时候打成war包,放入tomcat外部的webapps目录下运行;
SpringBoot内嵌入tomcat比引入外部tomcat容器部署性能要好;因为外部tomcat非常臃肿,把一些没有必要的组件全部都开启。
注意:在使用springboot项目开发的时候,不要将jar包放入到外部tomcat运行。

3 外部Tomcat容器优化移除jsp组件

站在微服务架构情况下分析优化外部tomcat
Tomcat配置优化
减少一些没有必要启动的配置

A.如果在微服务情况下,删除视图层加载
1.假设我们现在是微服务架构情况下,我们编写的接口都是rest形式http+json,微服务架构中只有接口没有视图层(jsp)jsp转换成servlet
3.因为外部tomcat服务器默认启动的时候对jsp支持非常友好,默认启动的时候就会加载我们的jsp组件
4.Tomcat conf/web.xml 定义了JspServlet 实现对我们jsp转换servlet操作;
所以优化策略:将conf/web.xml文件下的JspServlet移除;

4 外部Tomcat容器移除welcome-file-list

B.外部的tomcat服务器,有欢迎页面welcome-file-list,非常浪费效率,直接移除;
在这里插入图片描述

5 外部Tomcat容器移除Session和reloadable为false

C. mime-mapping告诉给浏览器响应类型,如果是微服务项目情况下,移除mime-mapping非json返回类型;
D.在微服务架构中,不会采用session;基本被token或者oatuh2.0替代,session配置去除;
session弊端:集群一致性
E.reloadable为true当部署的项目web/conf/class文件发生变化的情况直接实现热部署,在生产环境如果设置为true,黑客如果注入了class文件可能会不安全,所以在本地开发环境中可以设置为true,生产环境中必须设置为false;
生产环境不可能存在热部署,热部署一般情况下都是在开发环境;
在这里插入图片描述

6 外部Tomcat容器减少没有必要日志请求

F.减少日志请求记录,在tomcat中日志文件分为:catalina、localhost_access_log、
Catalina属于tomcat最核心的配置文件。
localhost_access_log记录每次请求,建议移除localhost_access_log日志配置文件(上图value标签)。

7 Tomcat中分为四种IO模型

Tomcat中分为以下四种IO模型:
1.BIO 使用传统io模型处理请求,阻塞io;
2.NIO 同步非阻塞式io,效率比BIO提高非常多倍,多路复合机制;
3.AIO 异步非阻塞形式,tomcat8支持;
4.APR tomcat以JNI形式调用http服务器的核心动态链接库来处理文件读取或网络传输操作,需要编译安装APR库。
SpringBoot内嵌入tomcat是nio,外部tomcat默认的情况下使用apr,需要将外部io模型改为nio模式。

配置方法:在tomcat conf 下找到server.xml

BIO: protocol =" org.apache.coyote.http11.Http11Protocol"
NIO: protocol =“org.apache.coyote.http11.Http11NioProtocol”
AIO: protocol =“org.apache.coyote.http11.Http11Nio2Protocol”
APR: protocol =“org.apache.coyote.http11.Http11AprProtocol”
在这里插入图片描述

8 Tomcat线程池参数性能优化

线程池优化
在conf/server.xml文件中
maxThreads=“150” minSpareThreads=“10”
maxThreads参数表示最多同时存在150个线程;
minSpareThreads 最小活跃的线程是为10个;

配置如何设置:实际项目来定
1.如果并发量比较大的情况下,最小活跃线程建议设置比较大,可以避免重复处理线程,增加吞吐量;但是如果最小活跃的线程比较大的情况下,非常占用cpu资源;
2.如果项目的并发量比较小的情况下,最小活跃线程可以设置小一点,可以节约cpu内存。

实际案例:
20/s tomcat线程池 最大线程数为100 最小活跃线程数30
在这里插入图片描述

9 外部Tomcat容器移除Connector8009端口

Connector的优化
1.8080 Http协议 处理请求;
2.8009 ajp协议 属于tomcat内部通讯端口号;
建议移除ajp协议8009端口监听,减少服务器内存消耗。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值