2011-09-14 67 views
2

我正在開發一個web服務應用程序,使用apache cxf。基本上這個webservice所做的是使用hibernate搜索psql數據庫並返回結果。

這項服務的問題在於它有點慢。當我在碼頭上運行LOCALY並讓客戶端請求數據時,VisualVM Profiler指出sun.rmi.transport.tcp.TCPTransport.ConnectionHandler.run消耗了80%的CPU時間。列表中的所有其他功能都低於5%。

我懷疑這個函數涉及將數據從服務傳輸到客戶端。兩者都在本地運行,所以我不希望這個傳輸花費這麼多CPU時間。有誰知道什麼可能導致這種情況?

謝謝!

+0

這是分析客戶端還是服務器進程,還是兩者? – Tim

+0

它佔用80%的「CPU時間」還是80%的「時間」?換句話說,在這段時間內它正在做什麼,或者只是在等待? –

+0

@Branko他使用VisualVM進行分析,我讀過的數據是計算掛鐘時間而不是CPU時間,並且這一觀察結果由沒有CPU使用情況確認。 – Tim

回答

0

我懷疑這個功能是參與從 服務的數據transfering客戶

不,它參與解組,定位,執行和編組整個RMI調用從去哇。如果它佔用80%的CPU時間,幾乎肯定是因爲您的遠程方法佔用了80%的CPU時間。

+0

這是否意味着80%是正常的? –

+0

@Coos Baakman完全依賴於你未公開的遠程方法實際執行的操作。 'while(true);'會消耗100%,不是嗎? – EJP