云计算教程之LNMTTomcat集群
课程目标
-
熟练掌握tomcat项目部署
-
熟练LNMT架构的搭建
1.1 启动程序 nginxWebUI-3.4.0.jar
java -jar -Dfile.encoding=UTF-8 nginxWebUI-4.2.2.jar --server.port=8848 > /dev/null &
占用端口, 默认以8080端口启动
项目配置文件目录,存放数据库文件,证书文件,
日志等, 默认为/app/code/nginxWebUI/
注意Linux命令最后加一个&号, 表示项目后台运行
1.2 ZrLog项目
1 前台: http: //zrlog.yunhelinux.cn:8080/zrlog/
2 后台管理: http: //zrlog.yunhelinux.cn:8080/zrlog/admin/
二、对接Nginx
2.1 nginx代理功能
#在web03做tomcat 项目的代理
#在/etc/nginx/conf.d/创建zrlog.linux.cn.conf文件,代码如下:
server{
listen 80;
server_name zrlog.linux.cn;
error_log /var/log/nginx/zrlog.error.log notice;
access_log /var/log/nginx/zrlog.access.log main;
location /{
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
#完毕后,检查代码
nginx -t
#配置/etc/hosts
192.168.3.9 zrlog.linux.cn;
#重启nginx
systemctl restart nginx
#在windows下的hosts修改文件
192.168.3.9 zrlog.linux.cn
2.2 动静分离
location ~* \.(html|jpg|jpeg|png|js|css)$ {
expires 10d;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
2.3 负载均衡
随着业务的发展,单实例服务已经不能够满足业务使用需要
pv 页面访问数量
qps 每秒查询次数 并发量
DAU 每日活跃用户数
单实例无法满足,扩容为多实例实施步骤:
①复制虚拟机,多实例
两台tomcat里项目里的内容要一致
在server04上配置和server03一样的实现:
1>建立项目文件夹目录,绑定host主机域名
[root@web03 logs]# vim /apps/tomcat/conf/server.xml
<Host name="zrlog.xuzhichao.com" appBase="/data/tomcat/zrlog"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="zrlog_access_log" suffix=".txt"
pattern="%{X-Forwarded-For}i %l %u %t %r %s %b %{User-Agent}i %{Referer}i" /> <==定义日志格式,显示客户端真实IP地址
</Host>
②配置nginx负载均衡**
在lb01上进行配置
upstream tomcat{
server 192.168.3.9:8080;
server 192.168.3.10:8080;
}
server{
listen 80;
server_name zrlog.linux.cn;
error_log /var/log/nginx/zrlog.error.log notice;
access_log /var/log/nginx/zrlog.access.log main;
location ~* \.(html|jpg|jpeg|png|js|css)$ {
expires 10d;
proxy_pass http://tomcat;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
location /{
proxy_pass http://tomcat;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
三、监控功能
3.1) 概述
未来通过各种监控工具(Zabbix/Grafana/Prometheus/....),监控Tomcat/java.
需要我们开启java远程监控功能(JMX remote)
2) 步骤
tomcat配置中修改tomcat启动的选项.开启jmx远程监控功能.
交给zbx就可以了(使用windows jdk连接tomcat)
*开启远程监控功能选项* | ||
---|---|---|
-Dcom.sun.management.jmxremote | 开启远程监控功能 | |
-Dcom.sun.management.jmxremote.port=12345 | 指定端口 | |
-Dcom.sun.management.jmxremote.authenticate=false | 关闭认证功能 | |
-Dcom.sun.management.jmxremote.ssl=false | 关闭ssl加密功能 | |
-Djava.rmi.server.hostname=10.0.0.9 | 写上本地网卡的ip,监听的地址. |
3.1 java监控命令
jps jps命令,只显示java进程. 类似于 ps -ef |grep java
jstack
jstack查看java进程内部信息,线程信息.
进程: 占空间,占系统资源,厂房.
线程: 厂房里面的工人,处理与用户的请求.
需要代码使用多线程技术. 通过ps aux 查看进程是否支持线程(是否使用多线程技术)
jmap
jmap查看或导出jvm信息 查看jvm使用情况
jmap -heap java-pid 导出java进程的jvm内存使用情况.
jmap -heap 130741
#导出文件到家目录下
jmap -dump:format=b,file=/root/8081.hprof 130741
[root@web03 bin]# ll -h /root
总用量 27M
-rw------- 1 root root 27M 8月 21 00:47 8081.hprof
mat分析工具
jvm内存映像文件,在windows/mac/ubuntu系统下通过MemoryAnalyzer Tool (MA/MAT) 1. 需要jdk环境
-
软件包解压即可使用
-
MemoryAnalyzer.exe(英文目录 )
3.2 查看进程
top命令找出消耗CPU高的Java进程及其线程id: 开启线程的显示模式(top -H,或者打开top后按H)。 按cpu使用率排序(top缺省就是按CPU的使用率降序)。 记下Java进程id及其CPU高的线程id。
#1.安装下载
wget --no-check-certificate https://github.com/oldratlee/useful-scripts/archive/release.zip
#2.解压
unzip release.zip
#.3查看
sh show-busy-java-threads.sh
# 从所有运行的Java进程中找出最消耗CPU的线程(缺省5个),打印出其线程栈
show-busy-java-threads
# 缺省会自动从所有的Java进程中找出最消耗CPU的线程,这样用更方便
# 当然你可以手动指定要分析的Java进程Id,以保证只会显示你关心的那个Java进程的信息
show-busy-java-threads -p <指定的Java进程Id>
show-busy-java-threads -c <要显示的线程栈数>
# 多次执行
show-busy-java-threads <重复执行的间隔秒数> [<重复执行的次数>]
# 记录到文件以方便回溯查看
show-busy-java-threads -a <运行输出的记录到的文件>
# 指定jstack输出文件的存储目录,方便记录以后续分析
show-busy-java-threads -S <存储jstack输出文件的目录>
故障排查流程
四、tomcat优化
安全优化
性能优化
jvm优化
1 安全优化 2 性能优化
io模型优化.线程数量,压缩的配置.
1) io模型优化
类似于nginx同步,异步模型.
决定了tomcat如何处理数据
- 点赞
- 收藏
- 关注作者
评论(0)