Linux服务器教程之十二Tomcat服务器监控

举报
tea_year 发表于 2025/01/20 07:40:30 2025/01/20
【摘要】 Tomcat监控和优化是一个重要的任务,以下是一些基本的步骤和建议: 监控内存使用情况: 使用Tomcat自带的管理应用(manager webapp)或第三方工具(如VisualVM, JConsole等)监控内存使用情况。 优化JVM参数: 根据内存使用情况调整JVM参数,如-Xms(初始堆大小)、-Xmx(最大堆大小)、-Xss(线程堆栈大小)等。

目标

实现tomcatWEB服务器的监控

监控功能

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,监听的地址.

1 java监控命令

jps jps命令,只显示java进程. 类似于 ps -ef |grep java

image-20240821003420019.png


jstack

jstack查看java进程内部信息,线程信息.

进程: 占空间,占系统资源,厂房.

线程: 厂房里面的工人,处理与用户的请求.

需要代码使用多线程技术. 通过ps aux 查看进程是否支持线程(是否使用多线程技术)

image-20240821003743651.png

image-20240821003850716.png

 先过滤出java进程的pid
 查看java进程的线程信息
 jstack  1786  #结合JAVA 程序员看
 查看java线程状态
 jstack  1786 |grep -i state

image-20240821004219178.png

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 821 00:47 8081.hprof
 ​

mat分析工具

jvm内存映像文件,在windows/mac/ubuntu系统下通过MemoryAnalyzer Tool (MA/MAT) 1. 需要jdk环境

  1. 软件包解压即可使用

  2. MemoryAnalyzer.exe(英文目录 )

    image-20240821010501995.png


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输出文件的目录>

故障排查流程

image-20240821012125311.png

tomcat优化

安全优化

性能优化

jvm优化

1 安全优化

image-20240821014114819.png

2 性能优化

io模型优化.线程数量,压缩的配置.

1) io模型优化

类似于nginx同步,异步模型.

决定了tomcat如何处理数据.

总结

本文详细讲解了tomcat WEB服务器 监控及优化措施,方便开发则后续在生产环境中继续有效使用tomcat服务器,有其他需要补充技术点,开发者可以参与优化哦!感谢!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。