Tomcat监控指标判断应用死了吗

概述

最近公司项目操作十分卡顿,一直以为是数据量的问题,因为公司项目是to B项目,用户流量比较少,部署的节点也就2个,后来发现是tomcat的线程不够导致的,最终把tomcat的性能指标输出到监控平台上,及时提醒。本篇文章主要帮助大家解决下面的几个问题:

  1. tomcat的监控指标有哪些?
  2. springboot引用中如何查看监控指标?
  3. 如何判断tomcat达到瓶颈,需要扩容了?

SpringBoot中集成监控指标

目前基本上大部分的应用都是springboot应用,本节以springboot为例,讲解如何集成tomcat的监控指标:

  1. 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
<version>1.9.3</version>
</dependency>
  • spring-boot-starter-web:springboot web应用的依赖
  • spring-boot-starter-actuator:监控指标通过actuator的端口暴露出去
  • micrometer-core:集成了tomcat的指标的jar

如果需要输出到prometheus等监控平台,可以直接引入下面的依赖:

<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.9.3</version>
</dependency>
  1. 配置文件配置参数
server:
port: 8888
tomcat:
threads:
## tomcat线程最大数量
max: 1000
## 开启tomcat监控
mbeanregistry:
enabled: true

## 打开所有端点
management:
endpoints:
web:
exposure:
include: "*"
  • 如果需要输出全量的监控指标需要server.tomcat.mbeanregistry.enabled等于true
  • 需要设置management.endpoints.web.exposure.include= *,开启查看的端点
  1. 启动应用,查看指标

请求http://localhost:8888/actuator/metrics,可以查看监控信息:

Tomcat监控指标判断应用死了吗

具体监控内容的查看方式如下:

Tomcat监控指标判断应用死了吗
  1. 原理起底
Tomcat监控指标判断应用死了吗

micrometer-core中有个TomcatMetrics类,会将tomcat的指标注册进去。

tomcat监控指标说明

下面是罗列了tomcat相关的监控指标和对应的说明:

指标代码 说明 建议
tomcat.sessions.created tomcat已创建session数
tomcat.sessions.expired tomcat已过期session数
tomcat.sessions.active.current tomcat当前活跃的session数
tomcat.sessions.active.max tomcat最多活跃的session数 建议显示在监控页面,超过阈值可报警或者进行动态扩容
tomcat.sessions.alive.max.second tomcat最多活跃session数持续时间
tomcat.sessions.rejected 超过session最大配置后,拒绝的session个数 显示在监控页面,方便分析问题
tomcat.global.error 错误总数 显示在监控页面,方便分析问题
tomcat.global.sent 全局request次数和时间
tomcat.global.received 全局received次数和时间
tomcat.servlet.request servlet的请求次数和时间
tomcat.servlet.error servlet发生错误总数
tomcat.servlet.request.max servlet请求最长时间
tomcat.threads.busy tomcat繁忙线程 显示在监控页面,据此检查是否有线程夯住
tomcat.threads.current tomcat当前线程数(包括守护线程) 显示在监控页面
tomcat.threads.config.max tomcat中配置最大的线程数 显示在监控页面
tomcat.connections.config.max tomcat接收和处理的最大连接数 显示在监控页面
tomcat.connections.current tomcat当前接收和处理的连接数 显示在监控页面
tomcat.connections.keepalive.current tomcat当前长连接数量 显示在监控页面
tomcat.cache.access tomcat读取缓存次数
tomcat.cache.hit tomcat缓存命中次数

总结

我们通过tomcat监控指标的tomcat.threads.busytomcat.threads.currenttomcat.connections.currenttomcat.sessions.active.max等判断tomcat是否达到了瓶颈,如果是的话,就需要扩展节点或者调优处理。

其实合理运用这些参数指标的一个前提是需要对tomcat本身的架构有一个深入的认识,然后基于这些指标去对tomcat做调优,本文就不展开了。

参考

https://cloud.tencent.com/developer/article/1614179

https://zthinker.com/archives/springboot20actuator监控指标分析


原文始发于微信公众号(JAVA旭阳):Tomcat监控指标判断应用死了吗

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/63800.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!