Web集群-Tomcat(二)完结
今日内容:
- JAVA故障案例
- Tomcat前后端分析项目
- Tomcat集群总结
一、Java故障案例
1.1 Java状态监控
常用:jps、jstack、jmap
1.1.1 监控命令
a)查看java进程–jps
java ps 命令,只显示java进程.。类似于 ps -ef |grep java
b)查看java进程信息–jstack
jstack查看java进程内部信息,线程信息。
进程状态分为:
- 新建状态New;
- 就绪状态Runnable;
- 运行状态Running;
- 阻塞状态Blocked;
- 死亡状态Dead
c)查看jvm信息–jmap
jmap查看或导出jvm信息。
导出jvm内存使用使用情况
导出jvm内存镜像
注意:生产环境该文件较大
d)mat分析工具
用于分析jvm的内存映像文件的工具,全称MemoryAnalyzer Tool
下载地址:https://www.eclipse.org/mat/downloads.php
图示:
1.1.2 监控脚本
show-busy-java-thread.sh
脚本:显示当前环境中,所有繁忙的java线程。 以百分数显示使用率最高的前几个线程.
执行:
1.2 java应用负载高的故障案例
排坑指南:
排查流程:
排查流程 |
涉及命令 |
1、通过监控服务发现系统负载高 |
zbx,prometheus |
2、登录到对应的节点,通过命令检查系统负载是否高 |
w,uptime,top,lscpu |
3、真的高,定位什么导致的系统负载高 |
top,ps aux,iotop,vmstat |
4、找出原因并且找出对应的进程,需要根据进程找服务相关的日志 |
查看日志信息 |
5、java进程查看进程中的线程信息 |
jps,jstack |
6、导出jvm信息,通过mat工具进行分析,分析出什么原因导致的故障 |
jmap,mat |
二、JAVA会话共享方案
会话共享方案 |
说明 |
备注 |
1、单机部署 |
如果只是单个应用,不用考虑会话共享的问题 |
|
2、session复制功能 |
tomcat进行配置后可以把session信息赋值给其他节点 |
适用于集群节点较少的,比如4个以内 |
3、通过插件实现,如存放在redis中 |
tomcat通过插件,把用户会话保存在redis中 tomcat-cluster-session-manager |
需要插件,进行配置,代码支持 |
4、通过代码指定session位置 |
修改代码增加功能,依赖性强 |
需要修改代码,实现与3类似的功能 |
5、使用其他方式替代会话 |
oath认证,token认证 |
代码级别的修改 |
三、Tomcat配置Https
应用建议:
- tomcat可以支持https,可以在tomcat中配置https证书.
- 未来可以在nginx中配置证书加密,tomcat未加密
3.1 参考案例
tomcat建议用pfx证书,如阿里云下载证书页面
下载后的证书文件:
tomcat的配置文件(参考):
如果是其他格式的证书,如JKS,配置要改变
3.2 部署自己的网站
3.2.1 证书转换
我的网站下载的证书只有三个文件,不是pfx(p12)格式的
需要使用工具转换成p12格式,转换得到gsblog.work.gd.pfx
文件
工具下载地址:
https://files.cnblogs.com/files/evemen/wosigncode.zip?t=1675735802
3.2.2 配置HTTPS
测试访问:https://gsblog.work.gd:8443
3.2.3 tomcat实现8080跳转8443
未来端口转发建议用nginx来实现
tomcat的配置如下(了解)
测试:http://gsblog.work.gd:8080
自动跳转到:https://gsblog.work.gd:8443
四、Tomcat优化(TODO 就业前讲解)
五、JAVA前后端分离项目
动静分离和前后端分离的概念
比如获取天气预报的API
5.1 前后端的部署方式
前后端分离部署的方式
- 前端代码:nodejs环境编译 –> 静态资源(html,css,js) –> nginx中。
- 后端代码:java代码,通过maven/gradle编译 –> war包/jar包,运行。
5.2 考试系统项目
5.2.1 概述
环境准备
主机 |
环境 |
IP |
web03 |
前端ngx + 后端jdk |
10.0.0.9 |
db02 |
数据库 mysql 8.0 二进制方法安装 /app/tools/mysql/ 数据目录/app/data/3306/ |
10.0.0.52 |
5.2.2 数据库部署
db02 — 10.0.0.52 操作
步骤总览:
- 下载并解压
- 配置Mysql
- 初始化Mysql
- 创建库、创建用户
- 导入数据库表与数据(sql文件)
1、下载并解压
2、配置
3、初始化数据库
4、创建库和用户
5、导入数据
5.2.3 部署后端
web03 — 10.0.0.9操作
1、jar包部署
2、测试访问
http://10.0.0.9:8000/student student 123456
http://10.0.0.9:8000/admin admin 123456
要能正常登陆,说明数据库连接没问题
5.2.4 部署前端
1、部署前端代码
提前准备:exam-web-前端.zip
2、修改nginx配置
2、测试访问
http://stu.oldboylinux.cn student 123456
http://admin.oldboylinux.cn admin 123456
5.3 前后端分离总结