Tomcat

84 阅读2分钟
  • 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并发连接数
  • 反向代理服务器
  • 负载均衡服务器
  • 动静分离