I try to deploy an application on GoogleCloud (free account at the moment). FrontEnd (Angular) and BackEnd (Java/JPA/SpringBoot) are build with maven in a single .jar.
Locally, on my server with Jenkins and with Google Shell :
mvn spring-boot:run => working fine
But when i try to deploy
mvn appengine:deploy => 502 error
Deploy is mark as success. But when i check logs (gcloud app logs tail -s default) SpringBoot deployment seems freezing, restarting, freezing again, ... And what's making me crazy... Sometimes it's working ... just few minutes before SpringBoot restarting again.
So, i need some advices to find what's wrong.
Here's my pom.xml
https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<artifactId>back-office</artifactId>
<name>back-office</name>
<description>Back Office</description>
<parent>
<groupId>fr.test</groupId>
<artifactId>mon-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
</dependency>
<dependency>
<groupId>nz.net.ultraq.thymeleaf</groupId>
<artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.1.0</version>
</dependency>
<!-- BOOT -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- PERSISTENCE -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- SECURITY -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>nimbus-jose-jwt</artifactId>
<version>4.39.2</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>fr.test</groupId>
<artifactId>front-office</artifactId>
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<repositories>
....
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.3.1</version>
</plugin>
</plugins>
</build>
And here's my app.yaml config (in src/main/appengine)
# [START runtime]
runtime: java
env: flex
handlers:
- url: /.*
script: this field is required, but ignored
runtime_config: # Optional
jdk: openjdk8
# server: jetty9
manual_scaling:
instances: 1
# [END runtime]
Based on the symptoms you're describing, I suspect that your application container is running out of memory and being killed by the OOM killer.
The default Flex VM only has 1GB of memory and only 600MB left to the application container.
One sure way to tell that memory is the issue is to find something like this in the
vm.syslog
in the Google Cloud Logging UI.Try increasing the memory by adding this to your
app.yaml
: