【问题标题】:Grails version >= 3 very slow when executing call to Oracle java network tracing API执行对 Oracle java 网络跟踪 API 的调用时,Grails 版本 >= 3 非常慢
【发布时间】:2021-09-07 00:05:06
【问题描述】:

我有一个 Grails REST 应用程序(版本 2.5.1),用于跟踪道路网络上的路线。该网络作为 LOD 网络托管在 Oracle DB 中。这个应用程序的性能非常好,只需几秒钟就可以返回一条完整的路线。

我尝试将此应用程序升级到更高版本的 Grails,最近一次是(4.0.3)。在追踪路线时,速度非常慢(大约 20 分钟而不是几秒钟)。该代码主要由服务组成,并带有一个控制器来启动它。没有域类,响应格式为 GeoJSON 线串。

当调用 Oracle Network API 中的 NetworkAnalyst.shortestPathDijkstra 方法时会出现缓慢。

我已经更新了用于 Oracle 19c 版本的 jar 文件,还尝试了 JDK 8 和 JDK 11,没有任何重大变化。

有没有人知道为什么更改 Grails 版本会对这段代码的速度产生如此重大的影响?

【问题讨论】:

  • “当调用 Oracle Network API 中的 NetworkAnalyst.shortestPathDijkstra 方法时会出现缓慢。” - 使用的 Grails 版本会影响 Oracle Network API 中代码的性能是没有意义的。
  • 我建议使用一个新的空 Grails 应用程序(grails create-app ...),然后添加最少的代码来测试该调用。另外,请检查它是否正在触发多个(重复)网络调用,因为您可能会受到 API 的限制?
  • @Jeff Scott Brown 我不明白为什么 Grails 版本会影响速度,但这基本上是两个版本之间的唯一变化。
  • @nickdos 我想我会在有时间的时候尝试这样做。这有望提供一些进一步的见解,但代码仍将相当复杂

标签: java oracle grails


【解决方案1】:

原来我必须通过调用 LODNetworkManager.getCachedNetworkIO() 而不是 LODNetworkManager.getNetworkIO() 来获取 NetworkIO 对象

与 Grails 版本无关,但是当我更新到 Grails 4 时,这一定发生了变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-19
    • 2015-01-08
    • 1970-01-01
    • 2013-08-19
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多