综合架构tomcat
2021-06-18 本文已影响0人
天生顽皮
一.期末架构服务tomcat
1.jre-jdk-jvm介绍
jre
java runtime enviroment java运行环境
jdk
java delelopment kit java开发环境(很多内容) = jre + 额外java工具
jvm
java virtual machine java虚拟机
**1份代码 想在不同的系统使用
**java 程序代码 运行在java虚拟机中 只要系统能有java环境(java虚拟机) 就可以运行代码
**1份代码 处处使用问题 代码可移植性
**对于 java虚拟机 一般关注 内存使用情况
二.准备环境与部署
1.web03
##jdk
#各种版本:
https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/
2.部署 jdk
[root@oldboy-tomcat ~]# tar xf /app/tools/jdk-8u241-linux-x64.tar.gz -C /app/
[root@oldboy-tomcat ~]# ln -s /app/jdk1.8.0_241/ /app/jdk
3.java jdk 环境变量
cat >>/etc/profile<<'EOF'
export JAVA_HOME=/app/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export
CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/app/tomcat
EOF
[root@oldboy-tomcat ~]# . /etc/profile 运行
4.检查 jdk是否部署完成
[root@oldboy-tomcat ~]# java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07,mixed mode)
5.部署 tomcat
[root@oldboy-tomcat ~]# tar xf /app/tools/apache�tomcat-8.5.50.tar.gz -C /app/
[root@oldboy-tomcat ~]# ln -s /app/apache-tomcat�8.5.50/ /app/tomcat
6.检查jdk+tomcat
[root@oldboy-tomcat ~]#
/app/tomcat/bin/version.sh
Using CATALINA_BASE: /app/tomcat
Using CATALINA_HOME: /app/tomcat
Using CATALINA_TMPDIR: /app/tomcat/temp
Using JRE_HOME: /app/jdk
太多了不写了
1.tomcat服务管理
image.png启动tomcat
[root@web01tools]#/application/tomcat/bin/startup.sh
Using CATALINA_BASE: /application/tomcat
Using CATALINA_HOME: /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME: /application/jdk
启动成功提示太多了不写了
检查端口与服务
[root@web01 tools]# ss -lntup|grep java
[root@web01 tools]#ps -ef |grep java
web访问10.0.0.7:8080
2.tomcat目录结构
image.png3.tomcat管理端
image.png*注意:tomcat 8.5 对管理端限制更严格
*要配置tomcat-user.xml之外
*还限制 只能在本地使用127.0.0.1 访问管理的
*从tomcat8.5开始 管理端默认只能通过 本地使用 127.0.0.1 访问 (类似于nginx all 127.0.0.1 ; deny all; )
*默认情况下,只能从与Tomcat运行在同一台计算机上的浏览器访问管理器。如果要修改此限制,则需要编辑管理器的context.xml文
件。
3.1查看登陆限制修改
原文为
[root@web03 /app/tomcat]# find -type f -name
"context.xml" |xargs grep 127
./webapps/host-manager/META-INF/context.xml:
allow="127\d.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
./webapps/manager/META-INF/context.xml:
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
./webapps/host-manager/WEB-INF/manager.xml:
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
修改为
[root@web03 /app/tomcat]# find -type f -name
"context.xml" |xargs grep allow
./webapps/host-manager/META-INF/context.xml:
allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
./webapps/manager/META-INF/context.xml:
allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"
/>
3.2修改登陆账号密码conf/tomcat-user.xml
image.png修改为
[root@web03 ~]# cat /app/tomcat/conf/tomcat-users.xml |grep role
NOTE: By default, no user is included in the "manager-gui" role required
NOTE: The sample user and role entries below are intended for use with the
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="host-gui"/>
<user username="oldboy" password="oldboy" roles="admin-gui,manager-gui,host-gui"/>
3.3因为是修改的配置文件所以需要重启
关闭
[root@web03 ~]# # /app/tomcat/bin/shutdown.sh
重启
[root@web03 ~]# # /app/tomcat/bin/startsh
3.4提示登陆状态
image.png3.5登录成功显示的信息
image.pngimage.png
image.png
4.tomcat日志与进程信息
4.1 进程信息
#ps命令查询 java进程信息
[root@web03 ~]# ps -ef |grep java
root 27620 1 0 10:01 ? 00:00:53 /app/jdk/bin/java -Djava.util.logging.config.file=/app/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /app/tomcat/bin/bootstrap.jar:/app/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/app/tomcat -Dcatalina.home=/app/tomcat -Djava.io.tmpdir=/app/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 28705 27620 0 12:10 ? 00:00:49 /app/jdk1.8.0_60/jre/bin/jav -Xms8m -Xmx32m -Dfile.encoding=UTF-8 -Duser.dir=/app/tomcat/webapps/zrlog/WEB-INF/plugins -jar /app/tomcat/webapps/zrlog/WEB-INF/plugins/plugin-core.jar 21913 41913 /app/tomcat/webapps/zrlog/WEB-INF/db.properties /app/tomcat/webapps/zrlog/WEB-INF/plugins/jars 51913 /app/tomcat/webapps/zrlog 2.1.14
root 29617 29411 0 15:35 pts/2 00:00:00 grep --color=auto java
jps查看 jps -lvm 显示最详细的信息 也可分开查看
*[root@web03 ~]# jps
28705 plugin-core.jar
27620 Bootstrap
29662 Jps
*[root@web03 ~]# jps -lvm
28705 /app/tomcat/webapps/zrlog/WEB-INF/plugins/plugin-core.jar 21913 41913 /app/tomcat/webapps/zrlog/WEB-INF/db.properties /app/tomcat/webapps/zrlog/WEB-INF/plugins/jars 51913 /app/tomcat/webapps/zrlog 2.1.14 -Xms8m -Xmx32m -Dfile.encoding=UTF-8 -Duser.dir=/app/tomcat/webapps/zrlog/WEB-INF/plugins
29682 sun.tools.jps.Jps -lvm -Denv.class.path=.:/app/jdk/lib:/app/jdk/jre/lib:/app/jdk/lib/tools.jar -Dapplication.home=/app/jdk1.8.0_60 -Xms8m
27620 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/app/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -Dcatalina.base=/app/tomcat -Dcatalina.home=/app/tomcat -Djava.io.tmpdir=/app/tomcat/temp
使用jps -lvm |grep -V jps
[root@web03 ~]# jps -lvm |grep jps
29698 sun.tools.jps.Jps -lvm -Denv.class.path=.:/app/jdk/lib:/app/jdk/jre/lib:/app/jdk/lib/tools.jar -Dapplication.home=/app/jdk1.8.0_60 -Xms8m
## java 高级命令 Troubleshooting Tools
##jmap 取出 java进程信息 jvm内存信息 heap memory
details for a process, core file
##导出 信息 jmap -heap java_pid (pid就是上面的过滤出来的数字)
[root@web03 ~]# jps -lvm |grep -v jps |cut -d" " -f1
[root@web03 ~]# jmap -heap 28705
会出结果
显示java真实的进程信息
#jstack 加pid Java process 显示java进程执行流程 调用信息 Troubleshooting Tools
4.2tomcat日志
image.pngcatalina.out 日志主要看
#error 错误
#startup 或 finished 启动所需的时间
5.tomcat配置文件
image.png#server.xml
#端口部分
###8005 shutdown端口
22 行: <Server port="8005" shutdown="SHUTDOWN">
###tomcat shutdown端口 telnet/nc 连接到这个端口 输入暗号tomcat将会关闭
###8080 http协议端口
69 <Connector port="8080" protocol="HTTP/1.1"
70 connectionTimeout="20000"
71 redirectPort="8443" />
###8009 ajp协议端口 与apache连接使用
115 <!-- Define an AJP 1.3 Connector on port 8009
-->
116 <!--
117 <Connector protocol="AJP/1.3"
118 address="::1"
119 port="8009"
120 redirectPort="8443" />
121 -->
#8009端口 是用来给 apache与tomcat进行连接使用
#现在 tomcat+nginx 可以把 这一行8009注释 提高tomcat性能
<Connector port="8009" protocol="AJP/1.3"
redirectPort="8443" />
#tomcat管理端 相应的配置
##管理端 实际生产环境 关闭
37 <GlobalNamingResources>
38 <!-- Editable user database that can also be
used by
39 UserDatabaseRealm to authenticate users
40 -->
41 <Resource name="UserDatabase"
auth="Container"
42
type="org.apache.catalina.UserDatabase"
43 description="User database that can
be updated and saved"
44
factory="org.apache.catalina.users.MemoryUserDatabase
Factory"
#指定管理端 密码文件
45 pathname="conf/tomcat-users.xml" />
46 </GlobalNamingResources>
#配置 tomcat 虚拟主机的内容
Nginx tomcat
Server_name Host name 域名
root appBase 站点目录
#unpackWARs #自动解压war包
#autoDeploy 自动部署 把代码加载到jvm内存中
148 <Host name="localhost" appBase="webapps"
149 unpackWARs="true" autoDeploy="true">
150
151 <!-- SingleSignOn valve, share
authentication between web applications
152 Documentation at:
/docs/config/valve.html -->
153 <!--
154 <Valve
className="org.apache.catalina.authenticator.SingleSi
gnOn" />
155 -->
156
157 <!-- Access log processes all example.
158 Documentation at:
/docs/config/valve.html
159 Note: The pattern used is equivalent
to using pattern="common" -->
#配置 日志
160 <Valve
className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
#日志文件 前缀是localhost_access_log
#日志后缀
161 prefix="access" suffix=".log"
#日志 里面的格式 " html语言中的
双引号
#日志内容 类似于 log_format
162 pattern="%h %l %u %t
"%r" %s %b" />
163
164 </Host>
#%h 客户端ip地址或者是域名
#%l (小写L) 远程用户
#%u 用户 Remote user that was authenticated (if
any), else '-' (escaped if required)
#%t 时间 日期和时间
#" 双引号
#%r 请求起始行 $request
#%s $status 状态码
#%b 大小
6.tomcat 部署应用及方式
6.1 部署应用方式
(1)如果开发给你的是war包 则把war包放入到 tomcat webapps 自动解压 自动部署
(2)如果开发给你的是jar包 相当于jar包里面已经集成了tomcat java -jar xxxx.jar 选项
image.png6.2 java开源软件
(1)jpress java wordpress
(2)zrlog java blog
6.3部署应用-zrlog
#准备数据库
登陆数据库创建zrlog 加字符集
create database zrlog charset utf8;
#web03 安装应用 让应用连接 数据库
cd /app/tools
把zrlog压缩包穿到/app/tools目录下
改名
mv zrlog-2.1.14-5537197-release.war zrlog.war
复制到/app/tomcat/webapps
cp zrlog.war /app/tomcat/webapps
复制进去后会自动解压
6.4去百度安装10.0.0.9:8080/zrlog
image.pngimage.png
安装完成后
ip:8080/zrlog 首页
http://10.0.0.9:8080/zrlog/admin 管理页面
image.png
6.5检查 数据库连接文件 和 用户上传 的目录
#数据库连接
[root@web03 /app/tomcat/webapps/zrlog]# cat ./WEB�INF/db.properties
#This is a database configuration file
#Wed Jun 02 11:14:44 CST 2021
driverClass=com.mysql.cj.jdbc.Driver
user=all
password=123456
jdbcUrl=jdbc\:mysql\://172.16.1.51\:3306/zrlog?
characterEncoding\=UTF�8&allowPublicKeyRetrieval\=true&useSSL\=false&serverTim
ezone\=GMT
#用户上传
http://10.0.0.9:8080/zrlog/attached/image/20210602/2021
0602111945_677.png
7. tomcat 3种工作模式: bio , nio , apr
7.1 io模型区别
image.png7.2修改io模型
###nio
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
#server.xml 中 修改 8080
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000"
redirectPort="8443" />
[root@web03 /app/tomcat]# grep -ni nio2
conf/server.xml
69: <Connector port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
查看修改结果-catalina.out日志
17-Dec-2019 10:46:33.106 INFO [main]
org.apache.coyote.AbstractProtocol.start Starting
ProtocolHandler ["http-nio2-8080"]
8. tomcat 多实例
8.1多实例:在同一台服务器上面运行多个tomcat
应用场景: 让服务器资源充分利用 使用多实例 E7(铂金CPU) 内存 512G 硬盘 1tb pci-e ssd * 8 raid 10 nginx
注意事项: 端口不同与路径不同.
/app/tomcat 8005
/app/tomcat_8081 8006
/app/tomcat_8082 8007
8.2配置tomcat多实例 tomcat_8081 tomcat_8082
cp -r /app/tomcat/ /app/tomcat_8081
cp -r /app/tomcat/ /app/tomcat_8082
[root@web03 /app/tomcat]# sed -i 's#8080#8081#g'
/app/tomcat_8081/conf/server.xml
[root@web03 /app/tomcat]# sed -i 's#8005#8006#g'
/app/tomcat_8081/conf/server.xml
[root@web03 /app/tomcat]#
[root@web03 /app/tomcat]# sed -i 's#8080#8082#g'
/app/tomcat_8082/conf/server.xml
[root@web03 /app/tomcat]# sed -i 's#8005#8007#g'
/app/tomcat_8082/conf/server.xml
查看端口
[root@oldboy-tomcat ~]# ss -lntup |grep java
启动tomcat多实例与检查
[root@oldboy-tomcat ~]# /app/tomcat_8081/bin/startup.sh
[root@oldboy-tomcat ~]#
/app/tomcat_8082/bin/startup.sh
查看端口
[root@oldboy-tomcat ~]# ss -lntup |grep java
#curl或浏览器访问tomcat多实例
###注意事项
#10.0.0.7:8080/index.jsp 直接访问首页文件 或 展示首页文件
#这个首页文件存放在webapps/ROOT下面
/app//tomcat/webapps/ROOT/index.jsp
#10.0.0.7:8080/odboy/index.jsp
#/app//tomcat/webapps/oldboy/index.jsp
#tomcat访问首页文件 注意事项
加入内容
[root@web03 /app/tomcat]# echo tomcat_8080
>/app/tomcat/webapps/ROOT/oldboy.jsp
[root@web03 /app/tomcat]# echo tomcat_8081
>/app/tomcat_8081/webapps/ROOT/oldboy.jsp
[root@web03 /app/tomcat]# echo tomcat_8082
>/app/tomcat_8082/webapps/ROOT/oldboy.jsp
测试
[root@web03 /app/tomcat]# curl
10.0.0.9:8080/oldboy.jsp
tomcat_8080
[root@web03 /app/tomcat]# curl
10.0.0.9:8081/oldboy.jsp
tomcat_8081
[root@web03 /app/tomcat]# curl
10.0.0.9:8082/oldboy.jsp
9tomcat的systemctl管理配置
1.编写配置文件
[root@web03 local]# cat /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat 8080 system cmd
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/app/tomcat/bin/startup.sh
ExecStop=/app/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
2.执行一步
systemctl daemon-reload
3.替换内容
sed -i '2a source /etc/profile' /app/tomcat*/bin/startup.sh /app/tomcat*/bin/shutdown.sh
4.执行
systemctl daemon-reload
5.使用systemctl开启
systemctl start tomcat
6.查看启动状态
systemctl status tomcat
其他案列修改里面的数字
以及sed -i '2a source /etc/profile' /app/tomcat*/bin/startup.sh /app/tomcat*/bin/shutdown.sh
[root@web03 ~]# cat/usr/lib/systemd/system/tomcat_8082.service
[Unit]
Description=tomcat 8082 system cmd
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/app/tomcat_8082/bin/startup.sh
ExecStop=/app/tomcat_8082/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
10.tomcat监控功能
10.1Tomcat远程监控 应用:
开发: 给开发留个后门 开发/运维 通过门查看 tomcat(jvm)
运维: 通过命令检查tomcat信息 通过监控软件检查获取tomcat信息
10.2通过监控软件 可以监控 tomcat状态(jvm状态)
1. 通过命令/脚本查看
2. 开启tomcat监控功能 jmx 再让zabbix监控
10.3通过命令行查看
*jps
*jmap
*jstack
*ps jps -lvm
*sh show-busy-java-threads.sh
上传show-busy-java-threads.sh到l系统中直接sh执行
[root@web03 ~]# ./show-busy-java-threads.sh
[1] Busy(0.0%) thread(21615/0x546f) stack of java process(21219) under user(root):
process 进程 在内存中创建空间
thread 线程 实际处理用户请求
10.4进程与线程
线程是指进程内的一个执行单元,
#进程
进程拥有自已独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调
度。
#线程
线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调
度
#协程和线程
协程避免了无意义的调度,由此可以提高性能:但同时协程也失去了线程使用
多CPU的能力
进程与线程的区别
(1)地址空间:线程是进程内的一个执行单位,进程内至少有一个线程,他们
共享进程的地址空间,而进程有白己独立
的地址空间
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内线程共享进程的
资源
(3)线程是处理器调度的基本单位,但进程不是
(4)二者均可并发执行
(5)每个独立的线程有一个程序运行的入口
10.4linux下配置tomcat监控
#开启tomcat远程监控 功能
#修改 tomcat/bin/catalina.sh
#CATALINA_OPTS java内置变量 修改java启动参数(tomcat)
# CATALINA_OPTS java启动参数
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote #jmx remote
开启tomcat远程监控功能
-Dcom.sun.management.jmxremote.port=12345 #指定端口
12345 还有2个随机端口
-Dcom.sun.management.jmxremote.authenticate=false #auth
认证 是否开启远程监控认证(用户名 密码)
-Dcom.sun.management.jmxremote.ssl=false #是否开
启https
-Djava.rmi.server.hostname=10.0.0.7" #tomcat
监听的ip地址
#这里我们
书写公网ip地址
#生产环境
书写内网ip
#本地ip
10.0.0.7 172.16.1.7
[root@web03 ~]# grep -A5 '^CATALINA_OPT'
/app/tomcat/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=10.0.0.9"
启动查看进程
systemctl start tomcat
[root@web03 ~]# ps -ef |grep java
root 22059 1 0 20:29 ? 00:00:06 /app/jdk/bin/java -Djava.util.logging.config.file=/app/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.0.0.9 -Dignore.endorsed.dirs= -classpath /app/tomcat/bin/bootstrap.jar:/app/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/app/tomcat -Dcatalina.home=/app/tomcat -Djava.io.tmpdir=/app/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 22363 20814 0 21:01 pts/0 00:00:00 grep --color=auto java
通过端口查询ss -lntup |grep java
[root@web03 ~]# ss -lntip |grep java
LISTEN 0 50 [::]:12345 [::]:* users:(("java",pid=22059,fd=20))
LISTEN 0 50 [::]:45178 [::]:* users:(("java",pid=22059,fd=21))
LISTEN 0 1 [::ffff:127.0.0.1]:8005 [::]:* users:(("java",pid=22059,fd=67))
LISTEN 0 50 [::]:34604 [::]:* users:(("java",pid=22059,fd=19))
LISTEN 0 100 [::]:8080 [::]:* users:(("java",pid=22059,fd=56))
增加了12345端口
10.5通过windows jconsole 连接(模拟zabbix连接) linux tomcat
image.pngimage.png
10.6jvisualvm
image.pngimage.png
image.png
image.png
image.png
10.7tomcat远程监控功能小结
命令/脚本: jps -lvm / pstree / show_busy_java_threads.sh
远程监控功能: jmxremote / jmx
小坑: 在 tomcat 8.5.x 配置开启功能 修改 catalina.sh 写成一行 或 加上
\ (续行)
11. Tomcat相关故障及排错
1. tomcat 开机自启动故障
#背景:
##1.tomcat环境使用的jdk 是二进制
##2. 设置tomcat开机自启动
#使用二进制安装jdk的时候 环境变量不在 /bin /sbin
/usr/local/bin /usr/local/sbin
#在重启就没有找到这个命令
#即使在 /etc/profile 中也是 无法识别
需要在 /etc/rc.local
. /etc/profile
##/etc/rc.local
. /etc/profile
/app/tomcat/bin/startup.sh
tomcat(java) 服务器 运行占用大量swap 物理内存占用较少
#java代码问题
## 增加swap
##Linux内核参数:
/etc/sysctl.conf
vm.swappiness=0
sysctl -p #内核参数生效
vm.swappiness=0 #控制系统是否优先使用物理内存 数越小 越优先使
用物理内存
3.:tomcat负载高 15k-20k
排查流程
1. 🌟整体排查: vmstat /top/ps aux 找出哪个进程的问题
2. 🌟找出进程对应线程id :
1. 通过top -Hp java进程id 找出是哪个java线程的问题
2. 或者 show_busy_java_threads.sh
3. 🌟转换:线程id--->16进制:问题线程的id 转换为16进制 线程id
4. 🌟找出线程的详细信息: jstack (显示java 进程信息) jstack
java进程id 过滤 java线程的16进制id 与开发沟通
5. 显示jvm信息: jmap (显示java jvm信息) jmap -heap java进程id
显示jvm的内存使用情况
6. jvm内存内容导出:jmap (导出 jvm内存的内容 ) jmap -
dump:format=b,file=/root/tomcat.bin pid
7. 给开发分析jvm导出文件:通过 mat(Eclipse Memory Analyzer
Tool )分析 windows
vmstat /top/ps aux
tomcat: 找出这个tomcat的pid top -Hp 10789 精确的找出某个线程
导致的
并且能找出线程的id 10802 (10进制)转换为16进制
12.https
12.1集群
image.png12.1web端配置
web03和web04所有的配置一样这里就只写一个了
1.<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Engine name="Catalina" defaultHost="zrlog.oldboylinux.cn">
Host name="zrlog.oldboylinux.cn" appBase="/code/zrlog"
unpackWARs="true" autoDeploy="true">
在这里主要修改网站名称,以及站点目录
2.创建对应的站点目录
mkdir -p /code/zrlog
3.移动zrlog的所有配置文件到站点目录
mv /app/tomcat/webapps/zrlog* /code/zrlog
12.2lb端配置
1.配置文件
[root@lb01 ~]# cat /etc/nginx/conf.d/zrlog.oldboy.com.conf
upstream zrlog {
server 10.0.0.9:8080;
server 10.0.0.10:8080;
}
server {
listen 80;
server_name zrlog.oldboylinux.cn;
return 302 https://zrlog.oldboylinux.cn$request_uri;
}
server {
listen 443 ssl;
server_name zrlog.oldboylinux.cn;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
location / {
proxy_pass http://zrlog;
include proxy_params;
}
}
2.创建放ca证书的目录
mkdir -p /etc/nginx/ssl_key
上传证书到创建的目录中
3.给证书改名
mv 5745132_zrlog.oldboylinux.cn.key server.key
mv 5745132_zrlog.oldboylinux.cn.pem server.crt
[root@lb01 ssl_key]# ll
total 8
-rw-r--r-- 1 root root 3818 Jun 4 08:55 server.crt
-rw-r--r-- 1 root root 1675 Jun 4 08:55 server.key
5.检查nginx配置文件启动nginx
12.3注意事项
####之后把本地解析的 zrlog.oldboylinux.cn 解析到10.0.0.5 去访问一下
####如果失败检查配置文件
####还有一个报错就是浏览器一直在让你安装 我们去检查tomcat的数据库文件有没有过来
####移动数据库文件的话是要关掉tomcat的
####这样我们的集群跳转就完成了
1.关键点,在web端互传的时候一定要关闭tomcat
2.tomcat的端口 不改变一直是8080
3.最后如果报错的话单台单台测试如果成功那就是nginx负载的问题
13.tomcat nginx 动静态分离
image.png13.1web端配置
在web04上装完之后 要启动nginx 首先要把web03上的tomcat关闭 不然端口号会冲突
在web04安装nginx
##现在我们去配置web04上的静态页面
[root@web04 conf.d]# vim /etc/nginx/conf.d/zrlog.oldboylinux.cn.conf
server {
listen 80;
server_name zrlog.oldboylinux.cn;
root /code/zrlog;
}
13.2lb端配置
[root@lb01 ~]# vim /etc/nginx/conf.d/zrlog.oldboy.com.conf
upstream zrlog {
server 10.0.0.9:80;
}
upstream zrlog_static {
server 10.0.0.10:80;
}
server {
listen 80;
server_name zrlog.oldboylinux.cn;
return 302 https://zrlog.oldboylinux.cn$request_uri;
}
server {
listen 443 ssl;
server_name zrlog.oldboylinux.cn;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
location / {
proxy_pass http://zrlog;
include proxy_params;
}
location ~* \.(jpg|png|jpeg|bmp|gif|js|css)$ {
proxy_pass http://zrlog_static;
include proxy_params;
}
}
检查启动nginx
去网页测试
13.3注意事项
web页面显示 502的话 去检查web03 tomcat的配置文件
可能是端口的问题
然后就是检查每个服务器的tomcat 或者是lb01上的 nginx
各种服务都起来之后呢 再去web页面访问
[root@web04 conf]# chown -R nginx.nginx /code/zrlog/
[root@web04 conf]# chmod 755 /code/
[root@web04 conf]# ll -d /code/
drwxr-xr-x 4 root root 33 Jun 4 23:37 /code/
nginx里面权限致观重要