Tomcat
- Tomcat
- http请求是一个应用层协议,数据传输是TCP/IP协议
- 1.用户发起请求
- 2.浏览器发起TCP请求
- 3.服务器接收请求并且建立连接
- 4.生产HTTP数据包
- 5.发送请求数据包
- 6.解析HTTP格式数据包
- 7.执行请求
- 8.生产HTTP格式数据包
- 9.发送响应的数据包
- 10.解析HTTP格式数据包
- Tomcat是一个HTTP服务器
- Tomca Servlet容器处理流程
- 1.HTTP服务器把请求信息使用ServletRequest对象封装
- 2.调用容器中的某个servlet
- 3.根据URL和servlet的映射关系,找到相应的servlet
- 4.如果servlet还没有被加载,则用反射加载,调用init初始化
- 5.处理request请求 ,封装servletresponse对象
- 核心组件:Connector(连接器)/Container(容器)
- 核心Catalina
- Server->(connector->container)
- Container
- 1.engine:
- 2.host:
- 3.contex:
- 4.wrapper:
- Tomcat类加载机制
- 系统类加载器(AppClassloader)-》扩展类加载器(ExtClassLoader)-》引导类加载器(Bootstrapclassloader)
- 自定义类加载器
- 1.一直传给最顶级的类加载器
- 2.按类加载器优先级加载
- 双亲委派机制
- 委托给上级类加载器,递归操作
- 作用:为了防止重复加载class,保证核心class不被篡改
- Tomcat的类加载机制
- 没有严格遵从双亲委派机制,防止webapp下多个应用lib下多版本的包兼容问题
- Commons类加载器-》Catalina加载器/Shared类加载器->webapp类加载器
- 每个应用程序都有一个WebApp类加载器
- Tomcat对Https的支持和性能优化
- 1。JVM虚拟机优化(优化内存模型)
- -Xms 最小堆内存 -Xmx 最大堆内存 建议相同(可用内存80%)
- -XX:MetaspaceSizez(元空间初始值)
- -XX:MaxMetaspacesize(元空间最大内存)
- 本地方法栈、程序计数器、栈、方法区(静态方法,变量、类加载器)、堆(年轻代、老年代)
- 垃圾回收策略
- 1.7JDK之后是G1收集器
- 2,tomcat自身配置的优化(比如是否使用了共享线程池?IO模型)
- 调整tomcat线程池,共享线程池
- 调整连接器(server.xml/connetor)参数
- 禁用AJP连接器
- 调整IO模式
- tomcat8之前默认使用BIO(阻塞式IO),之后的版本默认是NIO(非阻塞式IO)
- 当并发出现瓶颈可以尝试使用APR模式,但是要安装APR环境
- 使用动静分离,用Nginx+Tomcat
- Nginx笔记
- Http服务器
- 性能高,支持5W并发连接数
- 反向代理服务器
- 负载均衡服务器
- 动静分离