day12-tomcat服务 --- 二 (工作模式,多实例,故障案例负载高等)

https://www.cnblogs.com/f-ck-need-u/p/8120008.html#1-web- 《龙帅的tomcat》

一、tomcat工作模式 (bio,bio,apr)

更改工作模式也是调优的一部分,这里可配合Jmeter看来调整后的参数(吞吐量等)
在这里插入图片描述

在这里插入图片描述
可以在http://192.168.26.138:8080/manager/status看出当前用的是什么模式。
在这里插入图片描述
也可在catalina.out 日志最后启动完成后处也能看出用的是什么模式。
在这里插入图片描述

1.1 修改server.xml更改工作模式 (待写)

8.5版本默认nio模式

protocol="HTTP/1.1"

在这里插入图片描述

调整为 nio2模式 ,修改protocol的值

在这里插入图片描述

 <Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
               connectionTimeout="20000"
               redirectPort="8443" />

在这里插入图片描述
在这里插入图片描述

调整为apr模式

#安装apr环境 。   注意centos8没有tomcat-native源,需要编译安装
yum -y install apr apr-devel tomcat-native
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />

在这里插入图片描述

二、tomcat多实例

同一台服务器上运行多个tomcat ,实现过程如下:

tar -xf apache-tomcat-8.5.63.tar.gz
cp -r apache-tomcat-8.5.63/ tomcat_8081
cp -r apache-tomcat-8.5.63 tomcat_8082

sed -i.bak 's#8080#8081#g' tomcat_8081/conf/server.xml
sed -i.bak 's#8005#8006#g' tomcat_8081/conf/server.xml
sed -i.bak 's#8009#8010#g' tomcat_8081/conf/server.xml

sed -i.bak 's#8080#8082#g' tomcat_8082/conf/server.xml
sed -i.bak 's#8005#8007#g' tomcat_8082/conf/server.xml
sed -i.bak 's#8009#8011#g' tomcat_8082/conf/server.xml

mv tomcat_808* /application/

在这里插入图片描述

#分别启动另外两个实例8081和8082:
/application/tomcat_8081/bin/startup.sh
/application/tomcat_8082/bin/startup.sh
ss -naltp | grep java

在这里插入图片描述

echo "tomcat_8081" > /application/tomcat_8081/webapps/ROOT/index.jsp
echo "tomcat_8082 ..." > /application/tomcat_8082/webapps/ROOT/index.jsp

在这里插入图片描述
三个tomcat :
在这里插入图片描述

三、tomcat故障案例 —负载高(*)

初版本:
在这里插入图片描述

3.1 vmstat 找出CPU或磁盘导致负载高

看左边的procs下面的 r 和 b 。
r 数字较大意味着系统的cpu使用率较高
b 数字较大意味着磁盘io较高

[root@lvs1-138 conf]# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0   1024 330348     20 803316    0    0     1     6   62   63  0  1 99  0  0
 0  0   1024 330308     20 803316    0    0     0     0  272  292  0  1 99  0  0
 0  0   1024 330168     20 803316    0    0     0     0  248  280  0  1 99  0  0
 0  0   1024 329920     20 803316    0    0     0     0  260  270  0  1 99  0  0
 0  0   1024 330084     20 803316    0    0     0     0  284  269  0  2 98  0  0

3.2 ps aux , htop 具体看那个进程pid所导致

3.3 iotop 显示每个进程的io情况 pid

iotop -o  #只显示在进行读写的进程

3.4 jps 配合 top -p 看java进程

在这里插入图片描述
在这里插入图片描述
pstree -p 的:
130923是进程, 后面那一堆是线程
在这里插入图片描述

jps -lvm
pstree -p
#这个pid是java进程的pid
top -p 130923   # 只有进程显示  -p指定pid , -H 显示进程对应线程的信息
top -Hp 130923  #进程 线程都显示  ,然后看具体是那个线程出了问题,占用CPU啥的

在这里插入图片描述

3.5 将有问题的线程id 转为16进制 。

130923是进程 。 130924是线程。

echo 'obase=16;130924' | bc
1FF6C

3.6 jstack java进程id

jstack java进程id 过滤 java线程 的16进制id , 与开发沟通
在这里插入图片描述

 jstack 130923 | grep -i 1FF6C -A 10

在这里插入图片描述

分割线= 上面是前4步的 ,下面说 5 6 7步
在这里插入图片描述

3.7 jmap (显示java jvm信息)

jmap(显示java jvm信息) jmap -heap java进程id显示jvm的内存使用情况

与jvm相关的 jmap 导出或显示jvm信息
显示:显示jvm使用情况一共多少 ,使用多少,剩余多少。
导出: jvm内存信息数据等等导出到磁盘
jmap -dump 导出jvm内存内容
#jmap -heap javaPid
jps -lvm
#java jvm使用率,后面用来做自定义监控
jmap -heap 130923

在这里插入图片描述
上图主要是看那些百分数, 67% used ,17 % used ,

3.8 jvm内存内容导出

# jmap 导出jvm内存的内容
jmap -dump:format=b,file=/root/tmpFile/tomcat.bin 130923
然后将其下载到window,使用java mat进行分析

在这里插入图片描述

3.8 通过java mat分析 (熟悉) 研发协助

https://www.cnblogs.com/liuchuanfeng/p/8484641.html《利用内存分析工具(Memory Analyzer Tool,MAT)分析java项目内存泄露》
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
END

四、tomcat配置域名后,域名访问正常,ip访问404

修改了Tomcat的server.xml 的属性 。
hosts文件已做解析:192.168.26.138 blog.jpress.org
目前的问题是域名访问正常,用IP访问就404 。 最初localhost的时候,用IP访问是正常的。
在这里插入图片描述
在这里插入图片描述

解答:想再用ip,就再添加一个<Host name>值为ip的站点
<Host name="blog.jpress.org"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

<Host name="192.168.26.138"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

在这里插入图片描述

五、tomcat监控功能(略写)

在这里插入图片描述

jps -lvm

https://blog.csdn.net/daiming573/article/details/106813931/
《show-busy-java-threads脚本内容及使用过程》
在这里插入图片描述

pstree -p
pstree -a

5.1 监控tomcat (在大概113行左右写即可)

(8.5版本如果启动报错的话,则要将下面的内容写成一行, 或者用 \ 号来分来)
在这里插入图片描述

jmxremote  tomcat远程监控 有一个固定端口+2个随机端口

在这里插入图片描述

5.2 jconsole (略)

5.3 jvisualVM (略)

以及jmap , jstack

6、压力测试 (略写)

6.1 Jmeter (略)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值