0

bereit. Ich versuche, eine Anwendung auf GoogleCloud zu implementieren (derzeit ein kostenloses Konto). FrontEnd (Angular) und BackEnd (Java/JPA/SpringBoot) werden mit Maven in einem einzelnen .jar erstellt.Stellen Sie SpringBoot/Angular 4 in der Google App Engine mit maven

Lokal auf meinem Server mit Jenkins und mit Google Shell:

mvn feder boot: run =>adaequat

Aber wenn ich versuche,

bereitstellen

mvn appengine: deploy =>502 Fehler

Bereitstellen ist als Erfolg markiert. Aber wenn ich Protokolle prüfe (gcloud App Protokolle tail -s Standard) SpringBoot Bereitstellung scheint einzufrieren, Neustart, wieder einfrieren, ... Und was macht mich verrückt ... Manchmal funktioniert es ... nur wenige Minuten vor SpringBoot neu gestartet.

Also, ich brauche ein paar Ratschläge, um herauszufinden, was los ist.

Hier ist mein pom.xml

https://maven.apache.org/xsd/maven-4.0.0.xsd " xmlns: xsi =" http://www.w3.org/ 2001/XMLSchema-Instanz“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> 

Und hier ist meine 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] 

Antwort

1

Aufgrund der beschriebenen Symptome vermute ich, dass in Ihrem Anwendungscontainer nicht mehr genügend Arbeitsspeicher vorhanden ist und der OOM-Killer ihn umbringt.

Die standardmäßige Flex VM hat nur 1 GB Arbeitsspeicher und nur noch 600 MB für den Anwendungscontainer.

Eine sichere Möglichkeit, den Speicher zu ermitteln, ist das Problem, dass Sie in der Google Cloud Logging-Benutzeroberfläche unter vm.syslog suchen.

kernel: [ 133.706951] Out of memory: Kill process 4490 (java) score 878 or sacrifice child 
kernel: [ 133.714468] Killed process 4306 (java) total-vm:5332376kB, anon-rss:2712108kB, file-rss:0k 

Versuchen Sie, den Speicher zu erhöhen, indem diese mit denen Sie Ihre app.yaml:

resources: 
    memory_gb: 4 
+0

Du hast Recht. Dies ist nicht genügend Speicher. Danke für deine Antwort und die Erklärung! –

Verwandte Themen