我在Glassfish上部署了一个使用JPA(Eclipselink 2.0)来调用某些存储过程的应用程序。
我正在进行一些性能测试,我发现:每当重新启动glassfish服务器并尝试调用某个存储过程时,第一次调用总是很慢(与我选择调用哪个存储过程无关)。但随后的所有电话都很快。知道为什么会这样吗?
我检查了玻璃鱼监视器,它似乎不是连接问题。连接时间约为70毫秒,但存储过程调用的时间超过1000毫秒。所有子序列存储过程调用只需不到10毫秒。
答案 0 :(得分:0)
您第一次访问JPA时是否通话?如果是,则JPA在首次访问时初始化持久性单元,因此这可能是您看到的成本。
否则,您可以尝试设置EclipseLink Performance Profiler以查看花费查询时间的位置,或者使用Java Profiler(如JProfiler)。
在最新的EclipseLink版本中,有一个持久性单元poperty“eclipselink.deploy-on-startup”,这将导致在服务器启动时初始化持久性单元,而不是首次访问。