Tomcat专题

一、目录结构:

1、webAPP:代码工程部署目录(war包是对外提供服务,jar一般是内部使用的)

2、bin  *.bat(Windows) *.sh(Linux) catalina.sh(jvm)

3、logs日志文件 运行日志:catalina.out;用户访问日志:localhost_access_log.201x-12-10.txt

4、lib:tomcat使用的jar

5、conf:配置文件(server.xml   tomcat-user.xml-可以看到总线程数、当前启动的线程数、繁忙的线程数)

6、四种查看tomcat方法:jps;netstat;lsof;

二、监控:

1、监控tomcat(jvm、线程、排队等)

1.1、tomcat_user.xml配置:

1.2步骤:
1 .2.1进入/tomcat7/conf/tomcat-users.xml,配置如下内容
 

  <role rolename="manager-gui"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <user username="admin" password="admin" roles="manager-gui,manager-jmx,manager-status"/>

1.2.2、重启tomcat:

1.2.2.1、先进入bin目录,关闭tomcat:sh  shutdown.sh

1.2.2.2、启动tomcat:sh  startup.sh

1.2.3、输入http://ip:8080/manager/html

2、监控tomcat每秒并发(做压测就看前10S  20S的就行)

      awk是专门对文件内容进行统计的

awk -f  "=" '{}' locahost_access_log.2019-02-23.txt 

(说明:-f后边双引号引起来的意思是,用什么进行分割,空格的话,就什么都不用写,包括双引号)

①、awk '{print $4}' localhoust_access_log.201x-12-10.txt | sort -r | uniq -c | head -20  (统计每秒的并发)

sotr -r 反转未排序   uniq -c按照顺序去重统计    head -10  看当前的10S数据

②、awk '{print $1}' localhost_access_log.201x-05-06.txt |sort -n |uniq -c |sort -nr| head -30(万能统计)

三、关于日志信息:

1、catalina.out(是Catalina总日志文件,是Java代码的运行日志)

2、locallhost是用户访问日志

3、查看日志 日志打印出来的,否则无效:sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p'test.log

4、比如我要查找上面的从 2019-10-24 22:16:21 到 2019-10-24 22:16:59 这个时间段的日志

     sed -n  ‘/2019-10-24 22:16:21/,/2019-10-24 22:16:59/p’ all.log(时间后面的/p不能漏掉了)

5、模糊查询,比如查询时间段2019-10-24 22:14 到 2019-10-24 22:16

      sed -n  ‘/2019-10-24 22:14:*/,/2019-10-24 22:16:*/p’ all.log

6、也可以按小时模糊查询

      sed -n  ‘/2019-10-24 21*/,/2019-10-24 22*/p’ all.log

7、sed 也可以结合 grep 使用,比如我查询上面日志某个时间段的带有 POST 的日志行

      sed -n  ‘/2019-10-24 22:16:21/,/2019-10-21 20:16:58/p’ all.log | grep POST

8、查询某个时间段的日志,导出到本地

      sed -n  ‘/2019-10-24 22:16:21/,/2019-10-21 20:16:58/p’ all.log > laoyang.log

四、工作原理:

工作图:

工作原理1:

前提:tomcat启动的线程数没有达到maxThreads

当tomcat服务8080接受一个请求,tomcat会启动一个线程来处理此请求,过程即jmeter--A--C

工作原理2:

前提:当同时进来并发请求>200时,tomcat启动的线程数即maxTheads

当tomcat服务8080接受一个请求,tomcat会把此请求放入等待队列,等待空闲线程

工作原理3:

前提:当同时进来并发请求>200时,acceptCount排队>100

当tomcat服务8080接收一个请求,此时tomcat会直接拒绝此请求,返回connection  refused

工作原理整体总结:

注意:

1、maxThreads数满或不断上升原因:

①、并发量大

②、代码有瓶颈造成maxThreads配置的线程不能释放掉

2、acceptCount数满或不断上升原因:

①、并发量大maxThreads配置的线程不能释放掉

②、代码有瓶颈造成maxThreads配置的线程不能释放掉

connectTimeOut超时原因:

connection   refused原因:并发量大于maxThreads+acceptCount总和

代码有瓶颈,tomcat不能返回结果,当tomcat和请求连接超时报错后,代码线程和tomcat线程都会还在CPU中,只有代码瓶颈解决后,代码线程和tomcat线程才会从CPU中释放。

五、压测总结

1、jmeter请求数>maxThreads

      jmeter请求数>(maxThreads + acceptCount)

若响应时间<1s时,tomcat底层出少部分线程对接

2、jmeter请求数>maxThreads

      jmeter请求数>(maxThreads + acceptCount)

若响应时间>1s时,说明tomcat长时间不返回响应数据,即tomcat不能释放,故此时tomcat就要不断用新线程对接请求(根本原因:代码瓶颈)

3、jmeter请求数<maxThreads

      jmeter请求数<(maxThreads + acceptCount)

1.99%响应时间是105ms,可知服务器代码没瓶颈,tomcat也没有瓶颈,因它不参加代码计算,且tomcat只启动12个线程对接

tomcat线程配置规则:

规则:tomcat部署的相关代码无瓶颈 + 压测关注Linux服务器资源使用情况(cpu 75% , mem 75%)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村东头老杨

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值