gpt4 book ai didi

tomcat - 识别 tomcat 上的系统负载

转载 作者:行者123 更新时间:2023-11-28 23:49:19 37 4
gpt4 key购买 nike

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

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

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

谢谢

最佳答案

您可以使用键 java.lang:type=OperatingSystem 和属性 SystemLoadAverage 使用 JMX 获取系统平均负载。该值将是一个 double 浮点值(又名“double”)。

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

如果您的大部分请求都具有相同的“成本”,那么您可能希望将请求吞吐量视为衡量系统“负载”的更好指标。您也可以通过 JMX 获得类似的指标,但您必须计算连接器的名称(或者使用 jconsole 连接并浏览直到找到它)。

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

  1. 最大时间
  2. 处理时间
  3. requestCount

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

关于tomcat - 识别 tomcat 上的系统负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10938019/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com