-
tomcat简介
-
apache软件基金会的jakarta项目中的一个核心项目。
-
优点
-
开源免费
-
轻量级
-
对动态网页处理能力较强
-
能独立运行
-
-
tomcat核心组件
-
web容器
-
对http的请求做处理
-
-
servlet容器
-
名为catalina,处理servlet代码
-
-
jsp容器
-
将动态网页代码翻译成servlet代码
-
-
-
tomcat的catalina架构
-
-
1,server
-
代表整个tomcat容器,是整个容器的最顶(最外层)。 server只能有一个!
-
server的主要任务,就是提供一个接口让客户端能够访问到这个service集合,同时维护它所包含的所有的service的声明周期,包括如何初始化、如何结束服务、如何找到客户端要访问的service。
-
-
-
2,service
-
将connector和engine包裹起来,将两个容器组装起来, 在一个service中可以有多个connector, 但是engine只能有一个。
-
不同的service监听不同的端口,可以做基于端口的虚拟主机。
-
-
-
3,connector
-
接收连接请求,应答解析后的结果。通过相关配置,可以配置service的协议与端口号。
-
-
4,engine
-
该组件在service中有且只有一个,负责接收connector发送给过来的请求并选择响应的host容器进行处理。
-
-
5,host
-
host是engine的子容器,在engine中可以被放置多个,每一个host代表表一个网站站点(或者是基于域名的虚拟主机),
-
host组件至少有一个,且其中一个的name必须与engine组件的defaulthost属性相匹配。
-
在engine部分指出的默认主机(也就是通用匹配),这样设定是为了确保,即便请求信息不足以直接匹配到某个特定的host,tomcat也能有确定的默认处理路径,不会因为找不到合适的处理目标而导致请求失败。
-
-
-
-
-
6,context
-
代表在虚拟主机上运行的一个web应用,应用可以是war包,在host下可以定义任意多的context元素。
-
-
7,warapper
-
容器最底层,每一个warapper都封装了一个servlet,负责对象实例的创建,执行,销毁功能。
-
-
-
用户请求流程
-
1:用户在浏览器中输入网址,请求被发送到本机端口8080,被在那里监听的connector获得; 2:connector把该请求交给它所在的service 的 engine (container)来处理,并等待engine 的回应; 3:请求在engine、host、context和 wrapper 这四个容器之间层层调用,最后在servlet 中执行对应的业务逻辑、数据存储等。 4:执行完之后的请求响应在context、host、engine 容器之间层层返回,最后返回给connector,并通过connector返回给客户端。
-
-
-
部署tomcat
-
准备前奏
-
版本:9.0.8
-
jdk版本
-
java在各个平台的解压即用版本。
-
-
添加策略或关闭防火墙,关闭内核安全机制。
-
-
下载并安装jdk
-
rpm -ivh jdk-8u171-linux-x64.rpm
-
在profile中设置其环境变量
-
export java_home=/usr/java/jdk1.8.0_171-amd64
-
定义了java家目录
-
-
export classpath=$java_home/lib/tools.jar:$java_home/lib
-
定义了java类库(lib)的位置
-
-
export path=$java_home/bin:$path
-
定义了java的命令路径
-
-
设置完后重新加载一下该文件
-
否则重新登陆后才生效
-
java -version
-
查看一下版本信息
-
-
-
-
-
安装tomcat服务
-
解压后移动重命名到常用目录下即可例如:/usr/local/tomcat
-
利用软链接路径的方式将bin下的软件连接到对应目录可进行快速启动。
-
startup.sh
-
shutdown.sh
-
catalina.sh
-
-
startup.sh
-
启动后查询网络服务java看是否运行
-
-
- 8005端口是用于命令行关闭tomcat服务 8009 tomcat服务器通过connector连接器组件与客户程序建立连接使用的端口 8080是tomcat的web服务端默认口号
-
可以用8080端口进行访问测试看服务是否正常
-
优化tomcat初次加载速度慢
-
/usr/java/jdk1.8.0_171-amd64/jre/lib/security/java.security 找到将其修改称该方式即可。 securerandom.source=file:/dev/urandom
-
-
- 8005端口是用于命令行关闭tomcat服务 8009 tomcat服务器通过connector连接器组件与客户程序建立连接使用的端口 8080是tomcat的web服务端默认口号
-
-
-
tomcat目录结构
-
-
bin 目录:用于存放启动和关闭 tomcat 的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh 三个文件。
-
conf 目录:用于存放 tomcat 服务器的各种配置文件,比较常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。
-
lib 目录:用于存放 tomcat 服务器的 jar 包,一般不作任何改动,除非连接第三方服务,比如 redis,那就需要添加相对应的 jar 包。
-
logs 目录:用于存放 tomcat 日志。
-
temp 目录:用于存放 tomcat 运行时产生的文件。
-
webapps 目录:用于存放项目资源的目录。
-
该目录下能自动解压war包与jar包,但是不能放到子一级的目录中。
-
-
work 目录:是 tomcat 工作目录,一般清除 tomcat 缓存的时候会使用到
-
-
-
tomcat做虚拟主机
-
server.xml配置文件
-
优化该文件,提前做备份!!!
-
做备份
-
cp server.xml server.xml.bak
-
-
去掉注释
-
perl -0777 -pe 's/<\!--.*?-->//gs' server.xml > server.xml.nocomments
-
-
去掉空行
-
sed -i '/^[[:space:]]*$/d' server.xml.nocomments
-
-
优化过后
-
host部分大概7行
-
service部分大概12行
-
-
-
host容器部分
-
通过context容器能指定网站文档应用目录
-
<context docbase="/usr/local/tomcat/webapps/bbs" path="" reloadable="true" />
-
docbase:网页内容目录
-
path:虚拟目录
-
reloadable:修改类库后会被直接重载
-
-
-
-
基于域名
-
在engine容器中复制多个host容器即可
-
-
修改name即可,并且指定出context即可
-
-
-
基于端口
-
复制多个service即可
-
-
修改其中的8080端口保证不冲突即可
-
-
-
-
-
压力测试软件与tomcat优化
-
-
在windows中解压后jdk需要安装,jmater解压缩后找到启动器,jmater.bat启动即可-
测试软件调试步骤
-
添加线程组
-
-
-
设置发送数量, 标识1:用几个线程发送,代表了几个用户
-
标识2:在单位时间内发送的次数
-
标识3:循环几次 三者相乘的总数越大测试的结果就越精准。
-
选择聚核报告会以数字的方式列出数据 每一次测试后都需要清理数据,否则数据结果会被叠加!!! - 设置完毕后绿色按钮开始运行,再次出现绿色按钮表示测试结束,结束后稍等片刻,就可以在聚合报告中查看结果。
- 红色依次表示,平均响应时间,处理出错率,吞吐量。这几个具有参考价值。
-
-
-
tomcat优化
-
minsparethreads="50"
-
最小备用线程数。即使没有请求处理,tomcat也会保持至少50个线程等待,以便快速响应新请求。
-
-
enablelookups="false"
-
禁用dns查询。对于每个连接,tomcat默认会尝试解析远程主机的ip地址到主机名,禁用此功能可以提高性能。
-
-
disableuploadtimeout="true"
-
禁止上传超时。这意味着servlet容器在处理post请求的上传数据时不设置超时限制。
-
-
acceptcount="300"
-
当所有可用线程都在使用时,tomcat会将额外的连接请求放入队列中,这个值指定了队列的最大长度。
-
-
maxthreads="500"
-
最大工作线程数。这是tomcat能够同时处理请求的最大并发线程数。
-
-
processorcache="500"
-
这是一个优化参数,用于缓存创建的httpprocessor对象的数量,可以提升处理请求的效率。
-
-
uriencoding="utf-8"
-
compression="on"
-
启用http响应压缩。这可以减小传输数据的大小,从而加快页面加载速度。
-
-
compressionminsize="2048"
-
只有当响应体的大小超过2kb时,才会进行压缩。这避免了小响应的压缩开销。
-
-
compressablemimetype="text/html,text/xml,text/javascript,text/css,tex t/plain,image/gif,image/jpg,image/png" />
-
指定了哪些类型的mime内容可以被压缩。这里包括了常见的文本和图像类型,压缩这些内容可以显著减少带宽使用。
-
-
-
-
发表评论