Mor*_*tke 11 java openshift spring-boot okd
我们的项目托管在OpenShift中(确切地说是OKD。我们自己托管)。设置如下:
路由服务器(带有Zuul的Spring Boot 1.5.8):该服务器接收所有传入流量并将其路由到正确的服务
多种服务(全部使用Spring Boot):这是所有业务逻辑
我们使用SOAP来调用该项目中的其他服务。
当前,当我们调用应用程序时,调用转到路由服务器,然后路由服务器将其路由到主要业务服务。约一个小时的闲置时间后,无法通过外部呼叫获得我们的主要业务服务。但是,边缘服务器在100%的时间内可用且可调用。504 Gateway Timeout
当我们调用它时,确实会从系统中获取异常。我们已经弄清楚这是openshift haproxy.router.openshift.io/timeout
中的路由超时(在路由中)。
核心问题是,OpenShift似乎在闲置了大约一个小时后便休眠了主要业务服务。经过15分钟的延迟后,呼叫似乎找到了目的地,并且数据得到了正确处理。
我们如何关闭这种行为?
我们的pod配置(某些名称已匿名):
https://gist.github.com/moritzluedtke/6867499b0acbb2d7b5a9a70e49b0d45c
我们不使用自动定标器。
我们的部署配置(某些名称已匿名):
https://gist.github.com/moritzluedtke/dc7c1078fe9cc7e4aeb737094849fc1b
OpenShift Master: v3.11.0+1c3e643-87
Kubernetes Master: v1.11.0+d4cacc0
OpenShift Web Console: v3.11.0+ea42280
Run Code Online (Sandbox Code Playgroud)
看来这不是OpenShift的问题,而是我们的技术堆栈。一旦有解决方案,我将更新此问题。
我们最终更新了数据库驱动程序(POSTGRESQL)并从 spring 切换了默认连接池。
pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>${HikariCP.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
237 次 |
最近记录: |