重新构建应用程序以在多个服务器(JVM)上运行以提高性能

时间:2011-11-11 18:12:11

标签: java performance architecture

我有一个内部业务应用程序的遗留问题,该应用程序在一个JVM中运行,并且更具体地涉及Heap UsageRunning Concurrent Threads的许多性能问题,在它的核心,它是一个调度应用程序其中用户可以从前端安排一些任务,当时间到达任务获得启动时,所有代码都是自行开发的,我们没有使用任何第三方调度程序进行调度,现在我的目标是提高应用程序的性能我可以尝试一些选项,比如使用Quartz等调度机制或将应用程序分发给不同的jvms,我在这里遇到的挑战是我从未接触过这种重新构建应用程序的情况,所以我不确定在哪里从我开始,我知道这不是正确的地方提出这类问题,但我不确定如何处理,任何帮助/建议将受到高度赞赏。

2 个答案:

答案 0 :(得分:3)

通过阅读您的帖子,我不会觉得您已经真正掌握了性能问题的根本原因。解决任何此类问题的第一步应该是在提出解决方案之前确定原因。我首先会问一些非常高级的问题。

  • 您当前执行的并发任务/线程数是多少?
  • 作业CPU或IO是否受约束?
  • 运行该应用的软件堆栈是什么?
  • 该应用正在运行什么硬件?

通过在多个JVM之间分发应用程序,您将不可避免地增加复杂性,这很好,只要它是有效且必需的解决方案。

答案 1 :(得分:2)

我建议您使用实际工作负载来运行应用程序,以便服务器忙碌并对其进行分析以查找CPU,内存和资源瓶颈。

恕我直言:如果您使用超过1 - 8 GB的堆并且完整GC时间是一个问题,则将JVM 分离可能。如果你使用的比它少得多,它就不太可能有所帮助。

在你对这个问题有一个非常好的理解之前,不要对任何解决方案做出任何结论,否则你最终会花费大量时间来优化错误的事情,并可能使问题变得更糟。