Java 尝试计算大型图层的本机边界框时,Geoserver超时

Java 尝试计算大型图层的本机边界框时,Geoserver超时,java,oracle,geoserver,Java,Oracle,Geoserver,我正在从事一个项目,涉及连接到外部oracle数据库作为数据存储。我正试图基于oracle存储中的db视图向Geoserver添加几个层 许多层都很好: 除了单击“从数据计算”以计算本机边界框坐标(minX、minY、maxX、maxY)时有相当大的延迟外,有几个视图的接收效果良好。后台任务似乎在大约2-10分钟后完成。这很好 问题: 单击“从数据计算”后,有些非常大的视图没有完成。进程似乎超时。我附上了显示这个问题的截图。即,微调器消失,但边界坐标保持空白 以前有人见过这个吗?我已经尝试增加J

我正在从事一个项目,涉及连接到外部oracle数据库作为数据
存储
。我正试图基于oracle
存储
中的db视图向
Geoserver
添加几个层

许多层都很好: 除了单击“从数据计算”以计算本机边界框坐标(minX、minY、maxX、maxY)时有相当大的延迟外,有几个视图的接收效果良好。后台任务似乎在大约2-10分钟后完成。这很好

问题: 单击“从数据计算”后,有些非常大的视图没有完成。进程似乎超时。我附上了显示这个问题的截图。即,微调器消失,但边界坐标保持空白

以前有人见过这个吗?我已经尝试增加Jetty http.timeout和threads.timeout,没有骰子

进度微调器出现在右上角,表示正在进行计算,它将旋转大约15分钟,然后消失,坐标框保持空白。它只是停止没有错误-我已经检查了日志文件

此服务器运行在一个具有大量ram的centos 7机箱上。Geoserver本身使用3GB ram运行

你有过这样的经历吗

此外,我还考虑根据从oracle视图导出的CSV(根据所有几何体值计算),手动计算这些边界框值。我可以使用一个java包,比如JTS,有更好的方法吗

谢谢你的帮助


简单的答案是,Oracle spatial在一般情况下使用时很糟糕,因为GeoServer设计用于处理许多数据库,它的数据库访问代码中不可能有(许多)空间加速技巧。一个好的数据库(如PostGIS)总是很快的,而Oracle只有在您使用基于本地知识的提示手动调整它时才会很快。您没有说明使用的是哪个版本的GeoServer,但最新版本可能比旧版本快

要计算表的边界,可以使用以下命令向Oracle索取:

SELECT SDO_TUNE.EXTENT_OF('TABLE_NAME', 'SPATIAL_COLUMN');


这篇文章讨论了如何优化这些查询。

感谢您的帮助,它的geoserver 2.9.2与Oracle一样,不幸的是,别无选择,它是一个独立部门运行的数据库。我们有两个不同的数据库作为数据存储。Oracle和MySQL。我很清楚postgis是一个很好的gis数据库,但我对数据库引擎没有发言权。这些问题是一个很大的帮助,我将对此进行调查。既然问了这个问题,我发现有趣的是超时问题只发生在我们的centos机器上,在osx上本地运行需要很长时间,但最终完成,然后,我可以使用这些协作。因此,如果您将日志设置为开发人员级别,您可以看到发送到Oracle的实际查询并手动运行。这是一个很大的帮助。谢谢@iant。我会的。还有,我刚才在检查版本时发现。。。在本地,我在OSX上运行2.9.2,尽管层边界计算任务需要非常长的时间…~1小时。。。它完成了。而在centos AWS虚拟机上安装的linux是2.10.0。。。可能引入了错误/问题。我将在本地尝试2.10.0,看看问题是否会在本地出现,然后再尝试2.10.1,看看它是否已修复。我也可以在linux服务器上使用2.9.2,如果该版本在本例中确实更可靠……您提到了PostGIS。实际上,我们对mysql数据库有更多的控制权,它将是大量多边形几何数据的来源。尽管该数据库需要保留以满足其现有web应用程序的需要,但您是否建议将其与PostGIS数据库保持同步,直到地理数据视图?这样的表演真的值得一试吗?
select sdo_aggr_mbr(MY_GEOMETRY) from MY_TABLE;