首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >识别tomcat上的系统负载

识别tomcat上的系统负载
EN

Stack Overflow用户
提问于 2012-06-08 02:49:37
回答 1查看 437关注 0票数 0

我有一个运行web应用程序的tomcat服务器:http://www.LoudReview.com。这是一个有限的托管帐户,允许128 MB的内存。一次又一次,与tomcat服务器的连接超时。

我想知道是否有一种方法可以监视tomcat服务器上的负载,以便在系统高负载时减少内存密集型操作。我是否可以构建一些智能,以便监视系统正在使用的内存量,或者已经占用的连接数量,并相应地处理请求?

如果可能的话,我更喜欢易于实现的解决方案,尽管我也可以使用更复杂的方法。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-06-12 01:52:54

您可以使用关键字java.lang:type=OperatingSystem和属性SystemLoadAverage使用JMX获得系统平均负载。该值将是一个双精度浮点值(也称为'double')。

请注意,平均负载是采样期间运行队列的平均长度(上面的数字可能是瞬时的,也可能是1分钟的平均值)。根据您的系统,无论有多少请求等待处理,您的JVM进程都可能仅计为"1“。因此,您的平均负载可能始终为1.0 (这意味着完美的CPU利用率),而CPU实际上在为许多您无法检测到的请求提供服务。

如果您的大多数请求都是相同的“成本”,那么您可能希望考虑将请求吞吐量作为系统“负载”的更好度量。您也可以通过JMX获得这样的指标,但您必须计算连接器的名称(或者使用jconsole连接并浏览,直到找到它)。

Tomcat的每个连接器都有一个带有密钥Catalina:type=GlobalRequestProcessor,name="[protocol]-[connectortype]-[localip-?]-[portnum]的JMX bean。Catalina:type=GlobalRequestProcessor,name="http-nio-127.0.0.1-8217就是一个例子。这里有三个对您有用的属性:

  1. maxTime
  2. processingTime
  3. requestCount

您可以对这些值进行采样并跟踪您自己的负载,也可以在bean上使用resetCounters操作来重置计数器,让JMX bean为您保留所有指标。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10938019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档