我有一些基于内部部署的前端java servlet服务器,内部部署Java后端应用程序服务器和一个内部部署oracle数据库服务器。我的Oracle客户端版本是12.1.0。Java版本是openjdk "1.8.0_222“。并将tomcat v7.0.55用于前端servlet。该体系结构类似于后端服务器与Oracle DB进行通信,以处理SQL查询。
现在,我将除Oracle DB之外的所有服务器都迁移到了基于AWS cloud docker的容器。我的Java后端服务器运行在AWS docker上,连接到在内部数据中心运行的Oracle DB。
现在我面临一个问题,基于AWS的应用程序在连接到本地数据库时会有延迟,并且随着请求数量的增加,延迟会不断增加,如果请求持续增加,最终应用程序会获得网关超时。但奇怪的是,如果我将我的AWS tomcat前端服务器连接到与本地Oracle DB通信的本地java后端服务器,这将不会发生。仅当AWS Java后端服务器与本地Oracle DB通信时才会发生这种情况。我不确定为什么会发生这种情况。任何想法都将受到高度赞赏。
发布于 2020-10-15 06:13:38
这个问题与我们使用的DAO / ORM框架有关。如果你使用像Hibernate,Spring这样的东西,那么它的工作方式就是SQL调用不会通过join语句进行优化。因此,要获取1000个对象,需要进行1000+ SQL调用。因此,如果在网络到数据库中有一位数毫秒的延迟,它将启动到1000倍的延迟时间。因此,解决方案是使数据库与应用程序尽可能地接近。
https://stackoverflow.com/questions/58804822
复制相似问题