Linux机器上的CPU使用率很高

我有两个不同的机器上运行的一段Java代码,但在其中一台Linux机器上,代码使用了大量的CPU(接近100%的CPU使用率)。 在另一台机器上,相同的代码使用较less的CPU(3%到4%)。 CPU使用率高的机器是更强大的机器,更多的CPU和更多的内存。 这已经发生在最近,高CPU使用率的机器性能已经大大降低。 我想知道如果有人有任何想法,为什么这样的事情可能会发生,背后的可能原因等等任何猜测? 没有最近的硬件更改,没有最近的代码更新。

如果您怀疑硬件故障,请检查dmesg是否有任何输出。 根据硬件供应商的不同,可能会有某种types的IPMI实施(如戴尔的DRAC),并带有Web界面,可以显示您的硬件故障。

说实话,这可能是你的应用程序中的一个错误。 “添加计时器钩子,find瓶颈”。

  • validation两个节点上已部署的应用程序完全相同。
  • validation这两组JVM设置和应用程序configuration在两个节点上的适当位置是否相同
  • validation两个节点上的硬件configuration和规格是否相同。 (CPU / RAM / DISK)
  • validationLB确实提供循环服务。 查看两个应用程序的日志文件,以检查传入的请求是否均匀分布
  • 如果以上都没有抛出任何东西,然后运行jProfiler在慢机器上,并报告给应用程序开发人员,如果可能的话。
  • 监视两台机器上的所有进程。

LB请求发送到NODE1 | NODE1 HW SPEC1 | NODE1 APP部署|


LB请求发送到NODE2 | NODE2 HW SPEC2 | NODE2 APP部署|

如果确实全部检查出来,则需要考虑应用程序中请求中发送的数据模式发生了变化。

仔细检查LB用来分配呼叫的scheme,validation它不依赖于数据。

在JVM上运行jProfiling,在OS上执行Top或类似的操作,监视mysql日志文件。