问题的标题说明了每一件事。这是在Cloud Foundry环境中发生的。应用程序结构是这样的,有两个数据库,一个是Mysql,另一个是Oracle,两个数据库都已配置,并且其数据源创建良好。
最终目标是使用Springboot应用程序(ETL)将oracle数据库中存在的数据提取到mysql数据库中。在Oracle DB中运行选择查询大约需要30分钟,因为在执行选择查询后,将对具有大约10000条记录的海量数据的表应用联接。
当我在eclipse IDE中在本地环境中运行时,它工作得很好。但是问题出在云环境中。
当我在云端环境中的浏览器中运行其余链接时。它运行大约10到15分钟,并抛出504 httpstatus,我观察到的是在后台从应用程序中获取数据。我可以在保留的日志中看到这一点。但在浏览器中会引发异常。
如果它是我的,我想显示我的代码,但实际上是公司工作,这就是为什么我不能显示它的原因。
有人可以帮助我解决504错误吗?
答案 0 :(得分:1)
基于您共享的有限信息,您似乎正在调用REST API来运行ETL作业,该作业将数据从一个数据库传输到另一个数据库,这是一项耗时/长时间的工作。在我看来,这是异步操作而不是同步操作的不错选择。根据您提供的详细信息,我建议您的REST API应该触发一个新线程,该线程负责在后台运行ETL作业,如果成功触发了该线程,则立即在响应中返回成功。然后,您可以在UI上执行另一项操作,以显示ETL作业的状态,该状态必须维护在数据库中的某个位置,然后使用服务从那里进行拾取并显示在UI上。
注意:如果同步执行,那么对于这么长时间运行的操作,网关超时是不可避免的,除非您增加了相应服务的超时,我不建议这样做。