Tomcat
2020-03-27 10:35:42 0 举报
AI智能生成
Tomcat架构图
作者其他创作
大纲/内容
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
tomcat架构
Server服务器
service1
Connector
ProtocolHandler
Connector使用ProtocolHandler来处理请求的,不同的ProtocolHandler代表不同的连接类型
ProtocolHandler由包含了三个部件:Endpoint、Processor、Adapter
Endpoint用来处理底层Socket的网络连接
子主题
Processor用于将Endpoint接收到的Socket封装成Request(这个Request和ServletRequest无关)
Adapter充当适配器,用于将Request转换为ServletRequest交给Container进行具体的处理
Connector
主要是连接客户端请求;用于接受请求并将请求封装成Request和Response,然后交给Container进行处理,Container处理完之后在交给Connector返回给客户端。
Connector最底层使用的是Socket来进行连接的,Request和Response是按照HTTP协议来封装的,所以Connector同时需要实现TCP/IP协议和HTTP协议!
Connector
一个Connector会监听一个独立的端口来处理来自客户端的请求。server.xml默认配置了两个Connector:
它监听端口8080,这个端口值可以修改,connectionTimeout定义了连接超时时间,单位是毫秒,redirectPort 定义了ssl的重定向接口,根据上述配置,Connector会将ssl请求转发到8443端口。
...
Processors
Excutor
Container
Engine
Host
Context
Wrapper
一个Context可以包含多个Servlet处理不同请求
Wrapper
Wrapper
...
Context
默认配置下webapps下的每个目录都是一个应用
Context
...
Host
一个Engine包含多个Host的设计,使得一个服务器实例可以承担多个域名的服务
Host
...
默认的情况下 conf/server.xml 配置文件中 定义了一个名为Catalina的Engine
service2
接收客户端的请求,然后解析请求,完成相应的业务逻辑,然后把处理后的结果返回给客户端,一般会提供两个基本方法,一个start打开服务Socket连接,监听服务端口,一个stop停止服务释放网络资源。
service3
...
Listener
Global Resource
Security
JSP support
Clustering Support
配置+视图
配置
视图
Container如何处理请求的
Container处理请求是使用Pipeline-Value管道来处理的
Pipeline-Value是责任链模式
分支主题
Tomcat优化
内存优化
Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数
JAVA_OPTS参数说明
-server 启用jdk 的 server 版
-Xms java虚拟机初始化时的最小内存
-Xmx java虚拟机可使用的最大内存
-XX: PermSize 内存永久保留区域
-XX:MaxPermSize 内存最大永久保留区域
JAVA_OPTS=’-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m’
其内存的配置需要根据服务器(或虚拟机)的实际内存来配置
Tomcat并发优化
调整连接器connector的并发处理能力
maxThreads :客户请求最大线程数
minSpareThreads :Tomcat初始化时创建的 socket 线程数
maxSpareThreads: Tomcat连接器的最大空闲 socket 线程数
enableLookups :是否反查域名,取值为: true 或 false 。为了提高处理能力,应设置为 false
redirectPort: 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
acceptAccount: 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )
connectionTimeout: 连接超时
minProcessors: 服务器创建时的最小处理线程数
maxProcessors: 服务器同时最大处理线程数
URIEncoding: URL统一编码
如果要加大并发连接数,应同时加大这两个参数。
maxProcessors 和 acceptCount
压缩优化及参数
●compression="on" 打开压缩功能
●compressionMinSize="2048"启用压缩的输出内容大小,默认为2KB
●noCompressionUserAgents="gozilla,traviata" 对于以下的浏览器,不启用压缩
●compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些资源类型需要压缩
Tomcat缓存优化
tomcat的maxThreads、acceptCount(最大线程数、最大排队数)
maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200
acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100
maxThreads如何配置
1计算(主要消耗cpu),2等待(io、数据库等)
acceptCount的配置,我一般是设置的跟maxThreads一样大
要根据应用的访问峰值与平均值来权衡配置的。
tomcat的协议类型优化
1、关闭AJP端口
2、bio模式:
默认的模式,性能非常低下,没有经过任何优化处理和支持.
3、nio模式:
比传统I/O操作(bio)更好的并发运行性能。
修改server.xml里的Connector节点,修改protocol为org.apache.coyote.http11.Http11NioProtocol
4、apr模式
5、系统参数优化:
优化网卡驱动可以有效提升性能,这个对于集群环境工作的时候尤为重要
01、 修改/etc/sysctl.cnf文件
01、 修改/etc/sysctl.cnf文件
tomcat的安全配置
0 条评论
下一页