tomcat部署优化与压力测试软件

  • 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

      • 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内容可以被压缩。这里包括了常见的文本和图像类型,压缩这些内容可以显著减少带宽使用。

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值