2016-03-04 45 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