TOMCAT介绍
tomcat开放源代码web应用服务器,Java代码开发的
tomcat就是处理动态请求和基于Java代码的页面开发 可以在html当中写入java代码,tomcat可以解析html页面当中的java,执行动态请求,动态页面
机制有问题:buduitomcat进行优化,会出现:假死,停机,小集群,小服务,小应用适用于tomcat,大并发的场景不适合tomcat
1、免费 2、开源,可以二次封装 3、可配置性强,可以根据需要进行自定义配置,包括端口号,虚拟主机,等等 4、安全性:tomcat自带安全机制,可以配置用户认证,授权,加密传输 5、部署应用非常快捷:tomcat会自动部署,自动运行 webapps
核心组件三个:
web容器:完成web服务器的功能,web应用
web------>http(s)-----访问页面-------->文件index.jsp
web容器中,封装了一组文件,在这一组文件中,进行集中化管理
web动态页面
2、servlet:名字:catalina,处理servlet代码 就是处理web请求(http),以及生成动态内容的Java类 处理http请求
3、jsp:jsp动态页面翻译成servlet代码,用标准格式,展示jsp的静态页面
servlet: 1、处理http请求 2、生产动态内容,为了和数据库交互-----》用户发起的;jsp当中的。 3、会话管理,跟用户在不同请求之间的状态,通过管理,可以在用户访问不同页面时保持用户的状态。 4、与数据库交互,servlet可以连接到数据库,执行查询和更新操作。这就是servlet能够生成动态内容的原因jsp:java server pages。动态页面的开发技术。使用sp标签 index.isp 在html页面中插入java代码。
jsp容器-----》html页面当中的java代码翻译-------》执行---------------》展示结果 通常 <%,开头 %>,结尾
功能组件: connector:负载对外接受和响应请求,是tomcat与外界的交通权纽。监听端口,也可以接受外界清求,交给container外理
.container:负责对内处理业务逻辑
Engine:引擎,管理虚拟机 (service可以包含多个虚拟主机),可哟管理管理多个,一个service里面只能有一个Engine;
Host: 代表一个虚拟机,也可以叫站点,
Context:web应用,包含多个servlet
wrapper:封装器,最底层,每一个wrapper封装一个servlet,负责对象实例的创建,执行,销毁 父子关系,工作方式也是从上到下
1、输入网址,请求发送,请求发送到8080端口,被监听的获得;
2、conneclor会把请求转发到container处理---- engine(虚拟主机,你要访问哪一个虚拟主机) ----host((主机站点包含要请求页的位置webapps)------>从contex,就是index.jsp里面的内容。-->wrapper(servlet,响应解析处理请求)-------jsp翻译官---------页面展示。
exportJAVA_HOME=/usr/java/jdk1.8.0 201-amd64
指定jdk的安装路径。jdk解释器,类似于shell,各种工具。 exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarclasspath:
定义类的环境变量,环境类的库
export PATH=$JAVA HOME/bin:$PATH
可执行文件。
bin: 存放的启动和关闭tomcat脚本文件
conf: 主配置文件 serverxml主配置文件 contex.html host的默认置信息
tomcat-user.xml: 认证用户密码的配置文件 web.xm配置servlet servlet的规范标准。
lib: tomcat运行库的iar包,一般不动,除非连接第三方-----redis,数据库logs: 日志文件 webapps:web应用部署的默认目录
work:tomcat的工作目录,存放jsp编译之后的class文件,清楚tomcat缓存,就是删work目录。
JVM:就是java的虚拟机,是java应用程序在计算上运行的核心组件,jvm负载将编译后的java字节码(.class文件)解释或者编译成本地的机器码,计算机能够执行它。
JVM还提供好了内存管理,垃圾回收,线程管理。确保iava程序在不同平台可以有一致性的功能.
JVM优化 catalina.sh 就是servlet代码。已经容器的配置
PS Eden Space:堆内存: 存储新创建的对象
Ps old Gen:堆内存,存储长时间存活的对象
ps Survivor Space: 堆内存: 存在创建之后,生命周期较短的对象
Code Cache:非堆内存: 存储已经编译的代码
Compressed Class Space: 非堆内存: 存储已经压缩的类
Metaspace: 非堆内存,存储类的元数据
-server: 第一个参数,指定内存池,一定放在第一个
-Xms2048m: 初始java堆的大小。分配VM的最小内存,看cpu:cpu性能高,这个值,可以设高一点
-Xmx2048m:JAVA堆最大能多大,ivm的最大内存。和硬件内存挂钩。根据官方文档,起始值和最大值保持一致。XMS和XMX设为一样的,内存可以设为物理内存的一般。
-Xmn768m: 新生代的内存大小。官方推荐为了整个堆大小的3/8.
-XX:ParallelGCThreads=2: 配置并行收集器的线程数,同时可以有多少个线程进行垃圾回收。
-XX:Permsize: 设置持久代内存的大小,默认是物理内存的1/4,
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空间大起大落,影响系统的响应时间。响应速度会很慢。
堆区当中: 新生代 中生代 老年代
每一个新建的对象占用的空间,就是新生代。
java垃圾回收机制对堆区进行资源回收,新生代中没有被回收的资源,就是中生代。
ajp-nio-8009: ajp-nio: 连接器的类型 AJP:使用ajp 协议。nio:进行异步非阻塞 8009:连接器正在监听的端口。connect. AJP: 将tomcat服务器与前端web服务器进行连接。提供负载均衡和高效的请求转发
"http-nio-8080" 处理http请求,和客户端通信的端口。
Tomcat 虚拟主机配置: 台服务器上在一个tomcat中会部署多个虚拟机服务器。减少系统的资源消耗。
启动速度优化: 第一次启动tomcat会发现启动速度很慢,10几秒-1分钟jdk的参数: vim /usr/java/jdk1.8.0_201 -amd64/jre/lib/security/java.security securerandom.source=file:/dev/urandom
Tomcat 优化: server.xml针对主配晋文件的优化
redirectPort: 如果某连接器支持的协议的是http,当接受客户端发来的请求时https,就会启用此端口。8443
maxthreads: tomcat使用线程来处理请求的,可以创建的最大线程数,也就是并发连接数。默认200
minsparethreads:最小空闲线程数,开启tomcat时,会有多少线程。默认是10.
maxSparethreads;最大备用线程。一旦创建的线程超过这个值,tomcat会关闭不再需要的端口线程。默认是-1,也就是不限制。一般不指定
URIEncoding:URL的格式编码,默认utf-8。需要分别指定,所以一般也不动 connnectionTimeout: 网络连接超时,单位: 毫秒。为0,永不超时,一般为20000毫秒。
enablelookups:是否反向解析域名,为了能够获取远程的主机名。一般设置为false,直接返回IP地址。提高了处理能力。
disableUploadTimeout: 上传超时时间,设置为true.
connectionqploadTimeout: 因人而异,没有标准答案,1分钟,30秒。
acceptCount: 所有可以使用的线程都被占用了,可以传入连接请求的最大队列长度。默认100个。101个,超出范围直接丢弃,不在处理
compression: 是否开启页面和响应数据的压缩。of关 on开 force(所有的情况下都进行压缩。)默认是of 建议on
compressionMinize 压缩响应的最小值,等于或者小于这个值,就不再压缩了。2048
compressableMimeType: 可以被压缩MIME的类型
浏览器和其他互联网应用程序之间处理文件的协议和需要处理的文档的性质和格式 文本: text/html, text/plain 图像: image/jpg image/gif 音频: audio/wav audio/mp3 视频: video/mp4 video/avi 应用程序: application/pdf application/json