0

GoogleCloud에 응용 프로그램을 배포하려고합니다 (현재 무료 계정). FrontEnd (각도) 및 BackEnd (Java/JPA/SpringBoot)는 하나의 .jar에 maven으로 빌드됩니다.Maven을 사용하여 Google App Engine에 SpringBoot/Angular 4를 배포하십시오.

로컬, 젠킨스와 구글 쉘 내 서버 :

MVN 스프링 부팅 : 실행 =>

작동하지만 난

을 배포 할 때

mvn appengine : deploy =>502 오류

배포가 성공으로 표시됩니다. 하지만 로그를 확인하면 (gcloud 앱은 tail -s 로그를 기록합니다.) SpringBoot 배포가 멈추고 다시 시작되고 다시 멈추는 것 같습니다 ... 나를 미치게 만드는 이유 ... 가끔씩 작동 중입니다 ... SpringBoot가 다시 시작되기 전에 몇 분이 걸립니다.

그래서 무엇이 잘못되었는지 알기 위해 조언이 필요합니다.

가 여기 내 pom.xml 파일의

https://maven.apache.org/xsd/maven-4.0.0.xsd " 의 xmlns : XSI ="http://www.w3.org/ 2001/된 XMLSchema 인스턴스 "의 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> 

그리고 여기가 SRC에서 내 애플리케이션 제목의 설정 (의/주/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] 

답변

1

설명하는 증상에 따라 응용 프로그램 컨테이너의 메모리가 부족하여 OOM 킬러에 의해 사망하고있는 것 같습니다.

기본 Flex VM에는 응용 프로그램 컨테이너에 1GB의 메모리와 600MB 만 남아 있습니다.

메모리가 문제라고 판단하는 확실한 방법 중 하나는 Google Cloud Logging UI의 vm.syslog에서 찾을 수 있습니다.

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 

app.yaml이를 추가하여 메모리를 늘려보십시오 :

resources: 
    memory_gb: 4 
+0

네 말이 맞아. 이것은 메모리가 부족합니다. 당신의 대답과 설명에 감사드립니다! –