2013-04-09 76 views
3

目前,我正試圖在我的JSF/PrimeFaces web應用程序中消除瓶頸。爲了做到這一點,我安裝了VisualVM及其GlassFish插件。VisualVM和GlassFish

我無法通過JMX顯式「配置」,但我可以生成「採樣」輸出。但是,該輸出幾乎顯示了一個名爲$Proxy245.invoke()的操作中的全部負載。

VisualVM sampling output

我自己的操作(ch.diction。*)和SQL交互邏輯(com.mysql.jdbc。*),我懷疑是擺在首位的瓶頸,似乎並沒有貢獻的這種缺乏表現的可怕性很大。

正在顯示的頁面是帶有幾百個分頁記錄的PrimeFaces數據表。如果不是唯一的,記錄的數量確實會對性能產生顯着影響。

所以我的問題是:如何找出$Proxy245.invoke()背後的原因,以確定這種情況下真正的瓶頸?

預先感謝您爲您的意見和問候

帕斯卡爾

回答

1

的$ Proxy245是在你的情況下,一些AOP框架生成的代理類,目前還不清楚是哪一個。它用於攔截方法調用。由於它已生成,因此沒有找到實際的來源。我建議你用VisualVM(線程標籤)產生線程轉儲,並檢查堆棧跟蹤,我非常肯定你會找到這種方法(可能不是第一次嘗試,但做了幾次轉儲)。有了這個,你可以找到最後調用這個(代理)方法的方法鏈。

另外嘗試配置文件應用程序不僅樣本(分析器選項卡)。通過探查器,您可以瞭解這些是對多個相同方法的調用還是隻是一個不想結束的長調用。

+0

謝謝,這實際上有幫助!線程dumpp顯示我的一個安全授權人(Seam框架)直接在每個授權檢查上訪問數據庫,而不是使用緩存的bean。 – 2013-04-10 09:45:51