2016-03-04 62 views
0

在我的项目中,我使用JAX-RS(websphere),EJB和OpenJPA作为主要技术。JAX-RS服务太慢

即使在简单GET调用的非常简单的情况下,服务也需要很长时间。我可以看到的主要任务是使用JPA进行数据库调用,使用Dozer映射器将实体对象转换为传输对象,最后将底层websphere实现将传输对象转换为JSON。数据只是表中的几行,没有预先加载(因此除了目标表以外,没有数据来自表)。

我不认为这里涉及巨大的计算。它仍然需要大约10-12秒。服务器也足够强大。

我该如何找出根本原因?我计划使用System.nanoTime()来查找每个主要组件占用的时间。但是还有其他更好的方法吗?

回答

0

这就是我们早些时候遇到过这样的问题时所做的。 我们分析并找到了主要瓶颈,大多数时候很少有不正确的参数/方法选择导致这样的瓶颈。 因此,尝试使用替代方法消耗大部分时间。

您不需要使用system.nanotime。您可以使用任何类似virtualVM的分析器工具,它可以为您详细分析每个单元所花费的时间。

+0

感谢您的意见。 JProfiler似乎是最常用的工具。你会建议哪一个? – Mandroid

+0

Jprofiler支付我想,所以我没有建议。我们之前使用过JRockit,但看起来不再支持。他们将它合并到HotspotVM中。 VisualVM是oracles项目,所以我假设他们会使用jrockit的一些功能。 –

0

此答案可能无法直接回答你的问题。但是您可以使用jvisualVM来查找根本原因。下面博客将帮助你在你的Eclipse配置它很快
https://blog.idrsolutions.com/2013/05/setting-up-visualvm-in-under-5-minutes/

jvisualVM是工具都可以免费的JDK,你可以在一个名为“jvisualvm.exe”的jdk的bin文件夹中发现它,你可以只双击它开始

一旦您配置好运行程序,然后让VisualVM捕获您的处理。那么你可以通过点击“Sampler - > CPU”按钮来解释哪个类花费更多的CPU或者时间消耗,这会给你哪种方法需要更多的时间和CPU.Below博客也会帮助你分析数据。

http://scn.sap.com/community/java/blog/2015/09/18/step-by-step-to-use-visualvm-to-do-performance-measurement

如果你的程序花费大部分时间都在网络相关的程序包,那么无论你的程序是等待服务器的响应或你的程序更经常调用服务器侧的弯曲(在这种情况下,您必须找到聚合数据请求的方式,以便减少对外部服务器的呼叫)
请将您的发现与我们联系!

+0

我会的。谢谢。 – Mandroid