监控 Tomcat 个进程 CPU 个峰值

Monitoring Tomcat processes CPU spikes

我们在 Debian 下有几台 Tomcat 服务器(在 AWS 中)运行,我们所有这些服务器都使用 Cloudwatch 指标来衡量整体性能(内存、CPU 等)。我们已经检测到,在其中一些资源中,我们有 "spikes" 的 CPU 或内存利用率,我们希望检测实际上是什么阻塞了这些资源。由于所有服务器运行 java 基于 Tomcat 容器,合乎逻辑的是连接某种 JVM 分析器并可视化地监视其中的线程,但正如我们在以下情况下启用 Cloudwatch 警报一样超过某个阈值(例如 CPU 超过 90%),我们想触发某种自动统计数据收集以查看实际 Java thread/code 是这种消耗的根本原因.

是否有任何监控代理 and/or 性能收集工具可以帮助诊断那些特定的尖峰并且不需要为实际很长的 运行 进程收集统计信息?

我们已经尝试过 New Relic、DataDog 和 Dynatrace 的试用版(最新的是最有用的,但由于其商业模式不适合小公司而价格昂贵得令人望而却步。),但这些解决方案收集了一切,而不是只需要计时 windows,正如我上面所问的那样......这些可以工作,但如果在生产服务器中使用 100% 的时间(问题出现的地方,而不是在预生产中),会给服务器带来相当大的开销一个。).

我强烈建议设置预生产环境和 运行 负载测试(使用 JMeter 等工具)并结合服务器端监控。

Tomcat 可以使用 JMX 协议监控后端。

您有 2 个解决方案:

  • 免费:使用 Perfmon Agent 监控 CPU、内存和自定义 JMX Beans,
  • 的 JMeter
  • 免费增值(也就是为超过 50 个并发用户付费):OctoPerf 支持 Apache Tomcat monitoring,并且可以使用本地监控代理监控您的 aws 服务器。

像往常一样,免费软件只花费您的时间,而付费软件可以让您直接解决问题以换取一些便士。