我有一个内部业务应用程序的遗留问题,该应用程序在一个JVM中运行,并且更具体地涉及Heap Usage
和Running Concurrent Threads
的许多性能问题,在它的核心,它是一个调度应用程序其中用户可以从前端安排一些任务,当时间到达任务获得启动时,所有代码都是自行开发的,我们没有使用任何第三方调度程序进行调度,现在我的目标是提高应用程序的性能我可以尝试一些选项,比如使用Quartz等调度机制或将应用程序分发给不同的jvms,我在这里遇到的挑战是我从未接触过这种重新构建应用程序的情况,所以我不确定在哪里从我开始,我知道这不是正确的地方提出这类问题,但我不确定如何处理,任何帮助/建议将受到高度赞赏。
答案 0 :(得分:3)
通过阅读您的帖子,我不会觉得您已经真正掌握了性能问题的根本原因。解决任何此类问题的第一步应该是在提出解决方案之前确定原因。我首先会问一些非常高级的问题。
通过在多个JVM之间分发应用程序,您将不可避免地增加复杂性,这很好,只要它是有效且必需的解决方案。
答案 1 :(得分:2)
我建议您使用实际工作负载来运行应用程序,以便服务器忙碌并对其进行分析以查找CPU,内存和资源瓶颈。
恕我直言:如果您使用超过1 - 8 GB的堆并且完整GC时间是一个问题,则将JVM 分离可能。如果你使用的比它少得多,它就不太可能有所帮助。
在你对这个问题有一个非常好的理解之前,不要对任何解决方案做出任何结论,否则你最终会花费大量时间来优化错误的事情,并可能使问题变得更糟。