JPA - 在服务器重新启动后首次运行时调用存储过程很慢。为什么?

时间:2011-08-08 17:43:07

标签: stored-procedures jpa glassfish eclipselink

我在Glassfish上部署了一个使用JPA(Eclipselink 2.0)来调用某些存储过程的应用程序。

我正在进行一些性能测试,我发现:每当重新启动glassfish服务器并尝试调用某个存储过程时,第一次调用总是很慢(与我选择调用哪个存储过程无关)。但随后的所有电话都很快。知道为什么会这样吗?

我检查了玻璃鱼监视器,它似乎不是连接问题。连接时间约为70毫秒,但存储过程调用的时间超过1000毫秒。所有子序列存储过程调用只需不到10毫秒。

1 个答案:

答案 0 :(得分:0)

您第一次访问JPA时是否通话?如果是,则JPA在首次访问时初始化持久性单元,因此这可能是您看到的成本。

否则,您可以尝试设置EclipseLink Performance Profiler以查看花费查询时间的位置,或者使用Java Profiler(如JProfiler)。

在最新的EclipseLink版本中,有一个持久性单元poperty“eclipselink.deploy-on-startup”,这将导致在服务器启动时初始化持久性单元,而不是首次访问。

相关问题