74、75、76——tomcat项目实战

tomcat项目实战

tomcat 依赖 java运行环境,必须要有jre , 选择 jdk1.8 JvmPertest
千万不能用 kyj易捷支付 项目机器

  • 选择 一台机器 ,安装jdk1.8的机器
  • 下载tomcat的包 上传到机器,解压tomcat

tomcat文件

bin文件夹:

  • 启动文件

  • 堆栈配置文件 catalina.sh

    • JAVA_OPTS="-Xms256m -Xmx256m -Xmn128m"
    • JAVA_OPTS="-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -Xloggc:gc.log"
JAVA_OPTS="-Xms256m -Xmx256m -Xmn128m"
JAVA_OPTS="-javaagent:./jmx_prometheus_javaagent-0.18.0.jar=3088:./tomcat.yml"
JAVA_OPTS="-Xms256m -Xmx256m -Xmn128m -javaagent:./jmx_prometheus_javaagent-0.18.0.jar=3088:./tomcat.yml -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -Xloggc:gc.log"

在这里插入图片描述


conf文件夹

  • server.xml文件
    • tomcat的协议的服务端口 在这里配置; 如果一台电脑上,要启动多个tomcat,那么,就需要修改 这个文件中端口
    • tomcat线程池的配置

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>

    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
    -->

    <!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->
    <!-- A "Connector" using the shared thread pool-->

    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
               

在这里插入图片描述


tomcat性能调优:

  • 如果,性能测试,发现tomcat有 内存不足的问题时候,或者,tomcat响应时间 偏慢,我们可以去 调整 catalina.sh文件中 JAVA_OPTS 的堆栈配置参数
  • 如果,性能测试过程中,出现了 tomcat的连接数不够,或者 tomcat的并发用户数上不去。就要去改 server.xml文件中 连接池的配置参数。 ------连接池的大小, 不是想多大,就多大, 越大,消耗
  • 的资源也会越多。要根据你的资源情况,来合理设置。
    • 现在很多项目 springboot开发,这个框架,自带了tomcat, 也有连接池的配置参数,只是这个参数,开发写在代码中,打在jar包中。 ----如果,你性能测试,发现,需要调整,只能找开发人员去修改他代码

webapps文件夹

  • 存放部署的项目包
  • 部署的项目包 war格式 (不是jar包) 会自动解压
  • 服务的访问路径 就要 带上 项目包名称

项目包 JvmPertest.war
访问地址: http://ip:8080/JvmPertest/pertest1


tomcat的监控

grafana+prometheus+jvm_exporter

  • jvm_exporter 放到tomcat的机器上
  • https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/ 去里面下载自己要jar包
  • 把jmx_prometheus_javaagent-0.16.1.jar包 上传到 tomcat的bin文件夹
  • tomcat.yml文件 上传到 tomcat的bin文件夹
    在这里插入图片描述

修改 catalina.sh文件
添加 JAVA_OPTS=“-javaagent:./jmx_prometheus_javaagent-0.18.0.jar=3088:./tomcat.yml”
在这里插入图片描述


  • cd /opt/apache-tomcat-8.5.59/bin
  • 启动项目:./startup.sh
    在这里插入图片描述

启动日志收集:cd /opt/apache-tomcat-8.5.59/logs
输入:tail -f catalina.out
在这里插入图片描述


配置prometheus

grafana的启动: systemctl restart grafana-server 端口: 3000
启动prometheus: ./prometheus
后台进程运行 nohup ./prometheus &

  • 在grafana的web界面中,配置展示
    • http://grafana_ip:3000 admin admin
    • 添加数据源
      在这里插入图片描述

把 gc配置 、堆栈配置 注释了

项目是有 oom问题

怎么知道有 OOM问题: 1、从请求日志, 2、或者 从服务日志中看 3、 或者通过监控


堆栈配置参数

-server 第一个参数,指定为服务,多核时用
-Xms 启动时,初始堆大小;没有配置时,从最小逐步增加到最大值
-Xmx 运行时分配的最大堆大小;默认64M
-Xmn 新生代堆大小
-Xss 每个线程栈大小
-XX:PermSize 初始化非堆内存大小
-XX:MaxPermSize 永久代(非堆)最大内存大小
-XX:MaxNewSize 新生代最大大小


gc的配置

-XX:+PrintGC 打印gc
-XX:+PrintGCDetails 打印gc的详细信息
-XX:+PrintGCTimeStamps 打印gc消耗时间
-XX:+PrintGCApplicationStoppedTime 打印出 gc操作时程序出现卡顿的时间
-Xloggc:gc.log 输出gc日志文件的路径, 直接写了gc.log 意思是,gc日志文件,就在当前路径下。


tomcat的连接池参数

  • connectionTimeout 连接超时时间,单位毫秒
  • name:线程池的标记
  • namePrefix: 线程名字前缀
  • maxThreads: 线程池中最大活跃线程数,默认200
  • minSpareThreads:线程池中保持的最小线程数,也是线程每次增加的最小数量,默认25
  • acceptCount 最大可接受的排队数量
  • maxSpareThreads:这个参数标识,一旦创建的线程数量超过这个值,Tomcat 就会关闭不活 动的线程
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值