1

我将如何确定当前的服务器负载?我需要在这里使用 JMX 来获取 cpu 时间,还是有其他方法来确定它或类似的东西?

我基本上希望只有在服务器空闲时才运行后台作业。我将使用 Quartz 每 30 分钟触发一次工作,检查服务器负载,然后如果负载低则继续,如果忙则停止。

一旦我可以确定如何测量负载(cpu 时间、内存使用),我就可以在各个点测量这些以确定我想如何配置服务器。

沃尔特

4

2 回答 2

1

以便携的方式做起来很棘手,它可能在很大程度上取决于您的平台。

另一种方法是将 Quartz 作业配置为在低优先级线程中运行。Quartz 允许你配置线程工厂,如果服务器很忙,那么线程应该被洗牌到包的后面,直到它可以运行而不妨碍它。

此外,如果负载在作业中间达到峰值,那么 VM 将自动限制您的批处理作业,直到负载再次下降。它应该是自我调节的,这是您无法通过手动自省当前负载获得的。

于 2009-11-23T21:28:29.743 回答
0

我想你已经回答了你自己的问题。如果您想要一个纯 Java 解决方案,那么您能做的最好的事情就是ThreadMXBean返回的信息。

您可以找出有多少线程,主机有多少处理器以及每个线程使用了多少时间,并据此计算 CPU 负载。

于 2009-11-23T21:28:01.177 回答