开放源代码web应用服务器。(基于Java代码开发的),主要是处理动态请求和基于java代码进行页面开发。可以在html当中写入Java代码,Tomcat可以解析html页面当中的Java,执行动态请求,动态页面。
1,机制有问题,不对Tomcat进行优化,会出现:假死或者停机。小集群,小服务,小应用适用于Tomcat,大并发的场景不合适。
1,免费。
2,开源,可以二次封装
3,可配置性强
4,安全性,Tomcat自带安全机制,可以配置用户认证,授权,加密传输。
5,部署应用非常快捷,Tomcat会自动部署,自动运行。
1,web容器:主要是完成web服务器的功能,web应用。
web——>http或者https——>访问页面——>文件 index.jsp
)1,web容器中,封装了一组文件,在这一组文件中,进行集中化管理,web'动态页面
2,servlet容器:处理servlet代码,就是处理web请求(http),以及生成动态内容的Java类。
)1,处理http请求
)2,生成动态内容,为了和数据库交互——>用户发送的,jsp当中
)3,会话管理,跟用户在不同请求之间的状态,通过管理,可以在用户访问不同页面时保持用户的状态
)4,与数据库交互,servlet可以连接到数据库,执行查询和更新操作,这就是servlet能够生成动态内容的原因
3,jsp:将动态页面翻译成servlet代码,用标准格式,展示jsp的静态页面。
)1,jsp:java server pages 动态页面的开发技术。使用jsp标签index.jsp 在html页面种插入Java代码。
)2,jsp容器——>html页面当中的Java代码翻译——>执行——>展示结果。
1,connector:负责对外接受和响应请求,是Tomcat与外界的交通枢纽。监听端口,也可以接受外界请求,交给container处理。
2,container负责对内处理业务逻辑
)1,Engine:引擎,管理虚拟机(service,一个service里面可以包含多个虚拟主机),可以管理多个,但是每个service里面只能由一个Engine
)2,Host:代表一个虚拟机,也可以叫站点
)3,Context:web应用。包含多个servlet
)4,Wrapper:封装器,最底层,每一个wrapper里面都封装一个servlet,负责对象实例的创建,执行,销毁
1,输入网址,请求发送,请求发送到8080端口,被监听的connector获得
2,connector会把请求转发到container处理——>engine(虚拟主机,你要访问那个虚拟主机)——>host(主机站点包含请求页面的位置。webapps)——>从contex,就是index.jsp里面的内容。——>wrapper(servlet,响应解析处理请求)——>jsp翻译官——>页面展示
1,bin:存放的启动和关闭tomcat脚本文件
2,conf:著配置文件 server.xml 主配置文件
3,contex.html host :默认配置信息
4,tomcat-user.xml:认证用户密码的配置文件
5,web.xml:配置servlet servlet的规范标准
6,lib:tomcat运行库的jar包,一般不动,除非第三方——redis,数据库
7,logs:日志文件
8,webapps:web应用部署的默认文件
9,work:tomcat的工作目录
1,catalina.sh:就是servlet代码,已经容器的配置
2,PS Eden Space:堆内存:储存新创建的对象
3,PS Old Gen:堆内存,存储长时间存活的对象
4,PS Survivor Space:堆内存,存在创建之后,生命周期较短的对象
5,Code-Cache:非堆内存,存储已经编译的代码
6,Compressed Class Space :非堆内存,储存已经压缩的类
7,Metaspace:非堆内存,存储类的元数据
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:PermSize=1024m -XX:MaxPermSize=1024m -Djava.awt.headless=true -XX:+DisableExplicitGC" -server:第一个参数,指定内存池,一定放在第一个。 -Xms2048m:初始java堆的大小。分配JVM的最小内存,看cpu:cpu性能高,这个值,可以设高一点 -Xmx2048m:JAVA堆最大能多大,jvm的最大内存。和硬件内存挂钩。根据官方文档,起始值和最大值保持一致。XMS和XMX设为一样的,内存可以设为物理内存的一般。 -Xmn768m :新生代的内存大小。官方推荐为了整个堆大小的3/8. -XX:ParallelGCThreads=2: 配置并行收集器的线程数,同时可以有多少个线程进行垃圾回收。 -XX:PermSize:设置持久代内存的大小,默认是物理内存的1/4。 -XX:MaxPermSize=1024m :最大的非堆内存的大小,默认也是物理内存的1/4; -XX:PermSize=1024m -XX:MaxPermSize=1024m 非堆内存是不会被垃圾回收机制处理的,-XX:PermSize持久代内存与最大非堆内存不能超出操作系统可用的内存。设置成一样大,可以减轻伸缩堆大小的压力。 -Djava.awt.headless=true:避免在linux环境下,web不能正常打开以正常显示图片。 -XX:+DisableExplicitGC" :避免jvm空间大起大落,影响系统的响应时间。响应速度会很慢。
一台服务器上,在一个tomcat中会部署多个虚拟机服务器。减少系统的资源消耗
Tomcat优化:
1,第一次启动tomcat会发现启动速度很慢
jdk参数:
2,server.xml针对主配置文件的优化
)1,redirectPort:如果某连接器支持的协议是http,当接受客户端发来的请求是https,就会启动此端口,8443
3,maxthreads:tomcat使用线程来处理请求的,可以创建的最大线程数,也就是并发连接数。默认200
6,URIEncoding:URL的格式编码,默认utf、-8.需要分别指定,所以一般不动
7,connection Timeout:网络连接超时,单位:毫秒。为0,永不超时,一般为20000毫秒。
8,enableookups:是否反向解析域名,为了能够获取远程主机的主机名。一般设置为false,直接返回ip地址。提高了处理能力。
9,disableUploadTimeout:上传超时时间,设置为true
10,connectionUploadTimeout:因人而异,一般1分钟或者30秒
11,acceptCount:所有可以使用的线程如果都被占用了,可以传入链接请求的最大队列长度。(默认100个,超出这个范围的所有请求都会被直接丢弃)
12,compression:是否开启页面和响应数据的压缩。off关 on开 force(所有的情况下都进行压缩。)
多实例:在一台服务器上有多个tomcat服务。
HOME:tomcat主目录的路径,包含所有tomcat的文件
工具:
telnet:第三方软件,用作测试端口通信是否正常。
语法: telnet 20.0.0.40 80
静:静态页面
动:动态页面
分别可以对静态页面和动态页面发起不同的请求,会有不同的响应结果。
nginx 反向代理——>负载均衡——>tomcat是后端服务器——>web静态nginx——>静态请求——>nginx——>动态页面——>tomcat
我们需要多台tomcat:因为tomcat并发能力弱,只有nginx的六分之一,所以要有负载均衡进行合理的分配。