1.bootstrap server,service,connection,engine,context,这些组件声明周期如何管理,用lifecycle管理启动,停止,关闭
2.连接器,connector->container,连接器就是处理ip,分开就是为了解耦,为了servlet升级,容器模块不用改变
3.管道模式
4.jvm中类加载,和类加载器,
启动类加载器,bootStrap classload,extension 扩展类加载器,application 应用程序类加载器,customer 自定义类加载器
双亲委派模型,一直往上找,但是你可以重写,classLoad方法,就打破了双亲委派模型
5.为什么要搞这个模式呢?为了稳定性的,所有类都是object类型,你自己写一个会怎么样呢
6.tomcat中的类加载器,common类加载器,catalina类加载器,shared类加载器 webapp类加载器,
webapp类加载器,为什么打破双亲委派模型
tomcat类加载的考虑,隔离性,不同webapp肯定有不同的类加载器
灵活性,一个改了,不影响其它的的
性能,就是尽可能,少加载class文件,一个tomcat加载一个webapps
7.reload,这种热加载,tomcat是怎么实现的,通过定时任务去做的
8.优化,为什么需要嵌入式启动?
部署负责度,架构约束,微服务架构,springboot就是嵌入式部署,方式就是 Tomcat tomcat=new Tomcat();
9.server.xml 配置优化,io模式的优化,改成nio,当然8.5就是nio(nio2>apr>nio>bio)
线程数--(连机器)maxThreads 官方最大数量200,单cpu4,8一般可以优化800-1000
压缩,网络传输
使用线程池
去掉不必要的日志,accesslog,有负载均衡的话, 这个日志没有意思
关闭自动重载,热部署
web.xml的优化,
去掉不必要的servlet
10.tomcat中常见的设计模式,最常用的是模板,pipeline,还有管道,就是责任链模式