tomcat优化

目录

tomcat

tomcat优点

tomcat核心组件

Web容器

Servlet容器

JSP容器

功能组件

connector

container

tomcat处理请求过程

目录文件内容

内存池

堆区

JVM优化

ajp-nio-8009

启动速度优化

配置文件优化


tomcat

tomcat是基于Java代码开发的开放源代码的web应用服务器

tomcat就是处理动态请求和基于Java代码的页面开发,可以在html当中写入Java代码,tomcat可以解析html页面中的Java执行动态请求、动态页面

tomcat的机制有问题,不对tomcat进行优化会出现一些bug,如假死、停机。小集群、小服务、小应用使用tomcat,大并发场景不适合

tomcat优点

1.免费

2.开源,可以二次封装

3.可配置性强,可以根据需要进行自定义配置,包括端口号、虚拟主机等

4.tomcat自带安全机制,可以配置用户认证、授权、加密传输

5.部署应用非常快捷,tomcat会自动部署、自动运行

tomcat核心组件

Web容器

完成文本服务器的功能,是一个web应用

web---->http(s)---->访问页面---->文件index.jsp

web容器中,封装了一组文件,在这一组文件之中进行集中化管理

管理web动态页面

Servlet容器

名字为catalina,处理servlet代码,处理web请求(http),生成动态内容的Java类。

1、处理http请求

2、生产动态内容,为了和数据库交互---->用户发起的;jsp当中的

3、会话管理,跟用户在不同请求之间的状态,通过管理可以在用户访问不同页面时保持用户的状态

4.与数据库交互,servlet可以连接到数据库执行查询和更新操作。这就是servlet能够生成动态内容的原因

JSP容器

jisp将动态页面翻译成servlet代码,并用标准格式展示jsp静态页面

写好一个包之后丢进/usr/local/tomcat/webapps中

jsp jiava server pages 动态页面的开发技术。使用jsp标签,在html页面中插入Java代码

jsp容器---->将html页面中的Java代码翻译---->执行并展示结果

jsp标签通常以<%开头,以%>结尾

功能组件

connector

负责对外接收和响应请求,是tomcat与外界的交通枢纽,即负责监听端口,也复杂接受外界请求交给container处理

container

负责对内处理业务逻辑

Engine 引擎,管理虚拟机(service,一个service可以包含多个虚拟主机),可以管理多个虚拟主机,一个个service中只能有一个Engine

Host 代表一个虚拟机,也可以叫站点

Context web应用,可以包含多个servlet

wrapper 封装器,最底层,每一个wrapper中都封装一个servlet,负责对象实例的创建、执行、销毁

tomcat处理请求过程

1.输入网址,请求发送到8080端口,被监听获得

2.connector会把请求转发到container处理,由engine查询要访问的虚拟主机---->Host主机站点包含请求页面的位置。webapps---->context,就是index.jsp中的内容---->wrapper(servlet)响应解析,处理请求---->jsp翻译---->页面展示

目录文件内容

bin 存放的是启动和关闭tomcat的脚本文件

conf 

主配置文件 server.xml

contex.html host的默认配置信息

tomcat-user.xml 认证用户密码的配置文件

web.xml servlet的规范标准,配置servlet的文件

lib tomcat运行库依赖的jar包,一般不动,除非链接第三方,如redis、数据库

logs 日志文件

webapps web应用部署的默认目录

work tomcat的工作目录存放jsp编译之后的class文件,清除tomcat文件就是删work目录

JVM 就是Java的虚拟机,是Java应用程序在计算机上运行的核心组件,JVM复制将编译后的Java字节码(.class文件)解释或者编译成本地的机器码,使得计算机能够执行。JVM还提供了内存管理、垃圾回收、线程管理,确保Java程序在不同平台可以有一致的功能

内存池

PS Eden Space 堆内存,存储新创建的对象

PS Old Gen 堆内存,存储长时间存活的对象

PS Survivor Space 堆内存,存储创建之后生命周期较短的对象

Code Cache 非堆内存,存储已经编译的代码

Compressed Class Space 非堆内存,存储已经压缩的类

Metaspace 非堆内存,存储类的元数据

堆区

堆区当中会区分新生代 中生代 老年代

每一个新建的对象占用的空问,就是新生代。
java垃圾回收机制对堆区进行资源回收,新生代中没有被回收的资源,就是中生代。

JVM大小=新生代+中生代+老年代+永久代

JVM优化

catalina.sh 就是servlet代码以及容器管理

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的性能高这个值可以设高一点

-Xmx2048m JAVA堆最大能多大,jm的最大内存。和硬件内存挂钩。根据官方文档,起始值和最大值保持一致,XMS和XMX设为一样的,内存可以设为物理内存的一般

-Xmn768m 新生代的内存大小,官方推荐为整个堆大小的3/8

XX:ParallelGCThreads=2 配置并行收集器的线程数,绝对同时可以有多少个线程进行垃圾回收

XX:Permsize 设置持久代内存的大小,默认是物理内存的1/4

-XX:MaxPermsize=1024m 最大非堆内存的大小,默认是物理内存的1/4

非堆内存是不会被垃圾回收机制处理的,持久代内存与最大非堆内存不能超出操作相系统的可用内存。设置成一样大,可以减轻伸缩堆大小的压力

Djava.awt.headless=true 避免在linux环境下,web不能正常打开,以正常显示图片

-XX:+DisableExplicitGC" 避免JVM空间大起大落,影响系统的响应时间,响应速度变得非常慢

ajp-nio-8009

ajp-nio  连接器的类型 

nio 进行异步非阻塞。

8009 连接器正在监听的端口号。

AJP: 使用ajp协议,将tomcat服务器与前端web服务器进行连接。提供负载均衡和高效的请求转发

http-nio-8080
处理http请求,和客户端通信的端口

tomcat 虚拟主机配置

一台服务器上在一个tomcat中会部署多个虚拟机服务器。减少系统的资源消耗

启动速度优化

第一次启动tomcat会发现启动速度很慢,这时需要改变jdk参数

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security

securerandom.source=file:/dev/urandom

配置文件优化

针对server.xml主配置文件的优化。

redirectPort: 如果某连接器支持的协议的是http,当接受客户端发来的请求时https,就会启用此端口(8443)

maxthreads tomcat 使用线程来处理请求的,可以创建的最大线程数,也就是并发连接数,默认为200

minisparethreads 最小空闲线程数,决定了开启tomcat时会有多少线程,默认为10

maxsparethreads 最大备用线程,一旦创建的线程超过这个值,tomcat会关闭不再需要的端口线程,默认为-1,也就是不限制。一般不会指定

URIEncoding URL的格式编码,默认utf-8。需要分别指定,一般不动

connectionTimeout 网络连接超时,单位为毫秒,默认为0,永不超时。一般设置为20000

enablelookups 是否反向解析域名,能够获取远程的主机名。一般设置为false,直接返回IP地址,提高处理能力

disableUploadTimout 上传超时时间,设置为true

connectionUploadTimeout 设置上传超时时间,没有标准

acceptCount 所有可以使用的线程都被占用时可以传入连接请求的最大队列长度,默认为100,超出的直接丢弃不再处理

compression 是否开启页面和响应数据的压缩。off 关 on 开 force 所有情况下都进行压缩。默认是off,建议on打开

compressionMinSize 压缩响应最小值,等于或小于不会响应,一般设置为2048

compressionMimeType 可以被压缩MIME的类型
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值