如何确定当前的服务器负载?我是否需要在这里使用JMX来获取cpu时间,还是有其他方法来确定类似的东西?
我基本上只想在服务器空闲时运行后台作业。我将使用Quartz每30分钟触发一次作业,检查服务器负载,如果它很低则继续,或者如果它很忙则停止。
一旦我可以确定如何测量负载(cpu时间,内存使用量),我可以在不同的点测量这些,以确定我想如何配置服务器。
沃尔特
答案 0 :(得分:1)
以便携式方式执行,很可能在很大程度上取决于您的平台。
另一种方法是将Quartz作业配置为在低优先级线程中运行。 Quartz允许你configure the thread factory,如果服务器忙,那么线程应该被拖到包的后面,直到它可以运行而不会妨碍。
此外,如果负载在作业中间出现峰值,则VM将自动限制批处理作业,直到负载再次下降。它应该是自我调节的,你不会通过手动内省当前的负载得到它。
答案 1 :(得分:0)
我想你已回答了自己的问题。如果您需要纯Java解决方案,那么您可以做的最好的事情是ThreadMXBean返回的信息。
您可以找出有多少线程,主机有多少处理器以及每个线程使用了多少时间,并从中计算CPU负载。