2011-08-08 41 views
1

我有一個應用程序部署在Glassfish上,使用JPA(Eclipselink 2.0)來調用一些存儲過程。我在做一些性能測試,發現:每當glassfish服務器重新啓動並且我試圖調用一些存儲過程時,第一個調用總是很慢(不管我選擇調用哪個存儲過程)。但隨後的所有通話都很快。任何想法爲什麼發生這種情況JPA - 調用存儲過程在服務器重新啓動後首次運行時速度很慢。爲什麼?

我檢查了glassfish監視器,它似乎不是連接問題。連接時間約爲70毫秒,但存儲過程調用需要超過1000毫秒。所有的子序列存儲過程調用只需要不到10毫秒。

回答

0

是您第一次訪問JPA時的調用嗎?如果是,則JPA首次訪問時初始化持久性單元,因此這可能是您看到的成本。

否則,您可以嘗試設置EclipseLink性能分析器,以查看查詢時間的使用位置,或使用Java分析器(如JProfiler)。

在最新的EclipseLink發行版中,有一個持久性單元屬性「eclipselink.deploy-on-startup」,這將導致持久性單元在服務器啓動時初始化,而不是在第一次訪問時初始化。

+0

謝謝詹姆斯。我試圖設置eclipselink.deploy-on-startup,但這似乎不會影響時間。當持久化單元「初始化」時究竟發生了什麼,我應該如何設置分析器才能看到? – neo

相關問題