Tomcat
2020-03-27 18:25:59 6 举报
AI智能生成
Tomcat知识体系
作者其他创作
大纲/内容
性能优化
性能指标
响应时间
吞吐量(QPS)
服务可用性
性能测试
测试方法
负载测试
压力测试
持续运行时间测试
测试工具
ApacheBench
Jmeter
数据采集分析
网络
CPU/内存
性能优化
Tomcat配置优化
减少web.xml/server.xml中的标签
DefaultServlet
JspServlet
welcome-list-file
mime-mapping移除响应的内容
session-config
调整优化server.xml中的标签
Connector标签
protocol
protocol="HTTP/1.1"
executor
acceptCount
maxConnections
maxThreads
minSpareThreads
compression文本数据压缩
enableLookups设置为 false
删掉AJP的Connector
Host标签
autoDeploy生产环境可以关闭
Context标签
reloadable:false
启动速度优化
删除没用的web应用(默认带的一些)
关闭WebSocker(根据业务需要)
多线程启动Web应用
JVM优化
应用性能优化建议
常见问题排查
CPU使用率过高
可能原因:GC频繁或者创建了很多线程
排查:哪些线程比较消耗CPU,或者多线程上下文切换频繁
解决思路
top -H -p PID
jstack PID
拒绝连接
java.net.BindException: Address already in use: JVM_Bind
java.net.ConnectException: Connection refused: connect
java.net.SocketException: Too many open files
Web应用服务器
定义
http服务器
servlet容器
产品目录定义
bin
conf
lib
logs
temp
webapps
work
架构
server
service
Connector
设计思想:高内聚、低耦合
ProtocolHandler
Endpoint
AbstractEndPoint
NioEndpoint
Nio2Endpoint
AprEndpoint
JioEndpoint 8就去掉了
组件
Acceptor:监听Socket连接请求
AsyncTimeout:检查异步Request的超时
SocketProcessor:处理接收到的Socket请求
Processor
AbstractProcessor
AjpProcessor
Http11Processor
StreamProcessor
Adapter
Container
容器
Engine:全局servlet引擎
Host:虚拟主机
Context:Web应用的抽象
Wrapper:一个Wrapper对应一个Servlet
Pipline-valve
生命周期管理
处理请求
Session管理
Tomcat类加载器
架构设计考虑
隔离性:web应用之间类库相互隔离
灵活性:web应用之间类加载器相互独立,就可以单独重新部署
性能:web应用都具有自己的类加载器,加载类时不需要关注其他应用包含的jar包
WebAppClassLoader:自定义类加载器,打破了双亲委派模式
源码解读
源码分析
BootStrap:入口类
bootstrap.init() 和 创建Catalina
Catalinn
解析 server.xml
创建Server组件,并调用其init和start方法
Lifecycle
用于管理各个组件的生命周期:init、start、stop、destroy
LifecycleBase实现了Lifecycle,利用的是模板设计模式
Server
管理Service组件,并且调用其init和start方法
Service
管理连接器和Engine
源码解读文章
源码图示
设计模式
工厂模式
Tomcat8中的JIOEndpoint
模版模式
Lifecycle
观察者模式
LifecycleListener
包装模式
Wrapper
门面模式
HttpRequestFacade
适配器模式
Adapter
责任链模式
Pipeline-valve
一个请求的处理过程
Pipeline处理过程
启动过程
架构图
0 条评论
下一页