当前位置: 首页 > 知识库问答 >
问题:

使用maven在Google App Engine上部署SpringBoot/Angular 4

龚鸿羽
2023-03-14

我尝试在GoogleCloud上部署一个应用程序(目前是免费帐户)。前端(Angular)和后端(Java/JPA/SpringBoot)是用maven在一个.jar中构建。

在本地,在我的服务器上使用Jenkins和Google Shell:

mvn spring-boot:run=>工作正常

mvn AppEngine:Deploy=>502错误

部署标记为成功。但当我检查日志(gcloud应用程序日志尾部--默认)时,SpringBoot部署似乎冻结了,重新启动了,又冻结了,...而且是什么让我抓狂了...有时它会起作用...就在SpringBoot重新启动前几分钟。

所以,我需要一些建议来找出问题所在。

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>

这是我的app.yaml配置(在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]

共有1个答案

郝峰
2023-03-14

根据您描述的症状,我怀疑您的应用程序容器正在耗尽内存,并被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
resources:
  memory_gb: 4
 类似资料:
  • 当我试图在heroku上部署springboot应用程序时,出现了以下错误: 无法执行目标org.apache.Maven.plugins:maven-compiler-plugin:3.8.1:在项目后端编译(default-compile):错误编译:无效的目标版本:11->[Help 1]Remote:[error]Remote:[error]要查看错误的全部堆栈跟踪,请使用-e开关重新运行

  • 我在机器192.168.1.3上安装了weblogic 12c。我想使用maven插件从机器192.168.1.2部署ear: 在项目的第一阶段: 插件配置如下所示: 接下来我做 我得到以下错误 当将ear部署到远程服务器时,您能告诉我我做错了什么吗

  • 我有一个带有maven的java ee应用程序,当我构建项目然后部署在目标文件夹上生成的ear时,我试图注册到应用程序,所以我必须调用一个区域设置EJB会话(ConfigUser),我得到以下错误: 当我从netbeans部署时,它工作得很好,因为我知道项目的结构是在pom文件中的,如下所示: 这是jsp页面:

  • 我在springboot应用程序中有筛选器。在embedded tomcate 9.0.34中运行该应用程序时,它可以正常工作。然而,当我创建war并将其部署在外部Tomcate8.5上时,它会抛出以下错误。

  • 我正在尝试部署我构建的用于部署在Apache服务器上的Flask Web应用程序。我在Raspberry Pi 3上使用Raspbian(Jessie)OS。该应用程序在flask内置的开发Web服务器上运行完美,但我无法在Apache服务器上部署它。 这就是我所做的: conf文件为:etc/apach2/sites available/arduinoweb。形态: 中的WSGI脚本文件: Ap