栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Tomcat优化学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Tomcat优化学习

  • 服务器分类
    javaEE是企业技术的平台,技术有jsp,servlet,jdbc,在2018年更名为jakartaEE(雅加达),

  • 应用服务器(javaEE技术全部支持实现)
    是javaEE规范的具体实现,大部分是付费产品,

  • web服务器(javaEE技术部分实现)
    是开源的免费的, tomcat:Servlet容器,Jetty:免费,eclipse基金下,基于java编写的实现了servlet技术的web容器,

  • Tcp协议
    是一个可靠的传输协议,创建连接会经历三次握手,断开时会经历四次挥手,
    三次握手是客户端和服务器要发送三个包来确定连接关系,
    四次挥手是终止tcp连接,需要发送四次包来确认连接断开,

  • http协议
    客户端和服务器端是基于tcp协议来建立连接的,而数据传输是使用http协议,
    超文本传输协议,应用层协议,是万维网数据通信的基础,
    通常是客户端通过http协议发送一个请求,创建一个指定端口的Tcp连接,http服务器则监听客户端请求,一旦接听到请求后会返回一个状态和内容消息,
    特点是:无状态(Session+cookie)+单向性(服务器是被动)+无连接(一个连接处理一个请求)
    ftp协议是有状态的,下载东西一般时推出在打开连接可以继续下载,

  • http工作原理
    1 客户端 发送http请求,
    2 服务器接受请求后返回http响应,
    3 释放tcp连接 若connection模式为close时,则服务器会主动关闭tcp连接,若为keepalive时会长时间保持,
    4客户端浏览器解析响应内容,先查看状态码,解析响应头 文本类型和字符集,最后读取响应数据,对数据格式化,

当输入一个url时会经历那些流程呢?
1浏览器会向DNS服务器发送解析域名和ip
2 根据ip地址和服务器连接tcp连接,
3 发送http请求建立三次握手,
4 服务器作出响应返回资源数据
5 释放tcp连接,
6浏览器显示响应内容

  • tomcat架构图
    tomcat启动后就是一个Server组件,里面有多个service组件,还有多个host组件 ,有多个web app ,里面有多个Servlet
    tomcat大体上可以分成Connector组件和Container组件,
    Connector组件负责在服务器中处理客户端连接,container是负责对客户端请求进行逻辑处理和返回结果,
    是不是有一个server.xml这个是tomcat的配置文件 ,因为tomcat就是一个server组件,这个配置文件每一个节点就是一个组件,

  • tomcat组件
    1server组件 :顶级组件 代表是tomcat的运行实例,一个jvm中只能有一个server,
    2service组件:指的是一个服务,
    3 engine组件:服务引擎
    4 host组件:虚拟主机 ,一个主机代表一个服务器,内部可以部署多个应用,一个主机绑定一个域名,
    5 Context组件:应用上下文,一个webapp有一个context,

  • tomcat处理请求的过程
    1 输入url 发送请求,到服务器中Connector组件获取请求信息,
    2 connector把请求交给container中的engine中,
    3 engine获取请求来匹配到对应的虚拟主机host中
    4 host主机中会匹配到可以处理资源的Context组件应用
    5 构造出httpServletRequest对象和httpServletResponse对象,调用doget()和dopost()方法来执行业务逻辑,
    6 context把执行完之后的结果返回给host,
    7 host在返回给engine
    8 engine返回给connector
    9connector返回给客户端

  • tomcat中的目录
    1 bin目录是存放启动或关闭tomcat脚本文件的
    2 conf目录是存放配置文件的,重要的server.xml
    3 lib目录是存放web项目中的jar包,
    4 logs是存放tomcat日志文件
    5 temp是存放临时文件的
    6 webapps 是存放web程序的,部署项目的
    7 work 把jsp生成的servlet源文件和字节码文件存放到这里,
    (jsp本质就是servlet,jsp运行起来就成为servlet来运行,)

  • tomcat配置文件
    1 context.xml : 是tomcat公用的环境配置,可以配置自动扫描哪些文件或是目录,默认是配置了自动扫描web-inf/web.xml
    2 web.xml:是应用程序的描述文件,都是配置程序的设置,每个项目下都有一个web.xml。而tomcat这个web.xml是所有的父文件,
    3 server.xml:是tomcat服务器的核心配置文件,每个元素对应着一个组件,可以实现各个组件的端口配置,
    4 tomcat-user.xml:配置访问tomcat的用户和角色的配置文件,

  • tomcat项目部署方式一
    将项目的war包直接部署到webapps目录中,

    打开项目结构目录选择Artifacts项目,点击加号,设置要输出war包,最后设置naem,outputdir,就可以了,设置成功后
    点击idea上方build,选择build artfacts 最后在选择自己打包的方式,记得把war包要放到tomcat目录中webapps下就可以了
    总结:用idea将项目以war包的形式导出,复制到tomcat中webapps目录下,

  • 部署方式二
    不需要是war包,不需要放到指定webapps目录下,可以通过修改server.xml配置文件,将项目部署到自定义位置,
    在server.xml中标签中添加:
    1 path属性是浏览器访问的路径,
    2 docbase:web项目的webRoot路径,就是项目编译后的根路径,
    3 reloable:设定项目发生改变时自动重新加载项目,
    注意 不支持热部署,tomcat启动后只扫描一次这个文件,

  • 项目部署方式三
    通过在tomcat/conf/Catalina/localhost目录下创建一个 项目名.xml的配置文件
    添加配置:
    最方便的方式,每个项目可以分开配置,比较灵活,

  • tomcat优化配置
    1连接优化,在tomcat服务器中Connector组件是用户处理请求连接的,优化这个组件就可以优化连接,在server.xml配置文件中,每个标签对应一个组件,
    查看标签
    port :网络端口;
    protocol:使用网络协议,
    connection timeout:设置超时时间 默认20s
    urlEncoding: 设置请求字符集编码
    acceptorThreadCount: 设置线程个数,默认是1个,最多设置2个,
    2 压缩优化:启用压缩响应的内容,来减少网络传输的大小,比较消耗cpu,
    2.1 compression属性 作用是是否对http响应的数据启用Gzip压缩,选择值为off或者on, on是开启,开启后减少网络传输量,
    2.2 compressionMinSize属性 设置压缩之前的最小数据量,也就是说满足这个最小数据量才可以压缩,默认是2048;
    2.3 compressibleMimeType 属性 用于设定哪些文件可以进行压缩,值与值之间用逗号分隔,

    3 线程池优化:在tomcat中每一个用户请求都是一个线程,可以通过优化线程池来提高性能,
    方式一 在连接器中优化线程池,
    3.1 acceptCount : 当tomcat请求处理线程池中所有的线程都属于忙碌状态时,此时新建的链接会放到pending队列中,而acceptCount就是这个队列的容量大小,如果队列已满,此后的链接请求都会被拒绝,
    3.2 maxConnections : tomcat允许接收和处理的最大连接数,
    3.3 minSpareThreads : 线程池中保持活跃的线程最小数量,默认是10,
    3.4 maxThreads : 用于设置接收和处理客户端最大的线程数,tomcat是采用线程池的方式来处理客户端请求,这个参数代表线程池的大小,也就是说tomcat的并发量的个数,此值默认是200;
    3.5 maxKeepAliveRequests : tomcat需要保持的最大请求数,保持连接的请求个数,建议是maxThreads*0.5,不能大于maxThreads,值为-1表示不限制,1 表示关闭keepAlive机制,默认是100;

  • 线程池优化方式二
    在执行器中优化线程池,Executor
    1 namePrefix 线程号的前缀,
    2 maxQueueSize 最大的等待队列数,超过这个拒绝请求,
    3 prestartminSpareThreads 属性 如果不等于true,minSpareThreads的值没有作用,
    可以在执行器中配置链接,执行器也是为连接器服务的,

  • 网络优化
    在连接器中设置http协议的连接模型,有Bio,Nio,Nio2,可以优先选择Nio2

  • 测试工具Jmeter
    是一款测试压力的工具,是负载均衡功能测试和性能测试的java开源软件,可以使用JMeter对web应用的性能进行分析和测试,
    地址:http://jmeter.apache.org/download_jmeter.cgi
  • Jmeter的使用
    -打开下载的Jmeter软件中进入bin目录,找到jmeter.bat启动jmeter工具的脚本文件, 可以看出是java编写的软件,如果是.exe就是c编写的文件,
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292942.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号