2017-03-02 41 views
-4

我们有几个在Debian下运行的Tomcat服务器(在AWS中),我们都使用Cloudwatch指标评测整体性能(内存,CPU等)。我们发现,在其中的一些中,我们有CPU或内存利用率的“尖峰”,我们希望检测实际上堵塞这些资源的东西。由于所有服务器运行都是基于Tomcat容器内部的Java,所以逻辑上应该是挂接某种JVM概要分析器并直观地监控其中的线程,但是因为我们在超过某个阈值时启用了Cloudwatch警报(例如CPU超过90%),我们希望触发某种自动化统计信息收集,以查看实际的Java线程/代码是这种消耗的根本原因。监控Tomcat进程CPU峰值

是否有任何监控代理和/或性能收集工具可能有助于诊断这些特定尖峰,而不需要为实际的长时间运行过程收集统计信息?

我们已经试用了New Relic,DataDog和Dynatrace的试用版(最新版本是最实用的,由于其商业模式不适合小公司而非常昂贵),但这些解决方案不仅收集了一切,所需的时间窗口,正如我上面提到的......这些工作可能会起作用,但如果在生产服务器中使用100%的时间(问题出现在问题出现的地方,而不是预生产服务器上),则会给服务器带来相当大的开销。

+0

可能对此问题的改进正在Meta上讨论:https://meta.stackoverflow.com/questions/358401/making-my-questions-better/358407 –

+0

主要的stackoverflow部分用于代码相关的查询。你的问题中没有任何代码。您应该将其重新发布到其他部分并从此处删除。 –

回答

0

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

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

你有2个解决方案:

  • 免费:JMeter的与Perfmon Agent监测CPU,内存和自定义的JMX豆类,
  • 免费增值(又名收费为> 50个并发用户):OctoPerf支持Apache Tomcat monitoring,并且可以使用内部监控代理监控您的aws服务器。

和往常一样,免费软件只需花费您的时间,而付费软件则可让您直接在交换中获得一些便士。

+0

我喜欢JMeter/Perfmon,但我想我会将它安装到生产环境中(因为服务器可以处理它),而在预生产中,不幸的是,问题不会出现。关于JMX Bean,我想我必须研究这个问题 – gvasquez

+0

您还应该考虑像Datadog和/或New Relic这样的解决方案来进行生产监控。 –

+0

我目前正在使用AWS的CloudWatch来达到这个目的。新遗物堵塞了我的服务器(他们的支持团队可以修复它),我不记得Datadog发生了什么 – gvasquez