2017-09-29 13 views
0

私はこれを約1週間苦労しています。私はSOで見たことが何も私のために働いていません。 Google App EngineにデプロイしようとしているSpring BootにREST APIが組み込まれています。ローカルで実行しても問題ありません。GAEエミュレータで実行するとうまく動作します。しかし、一度私がmvn appengine:deployを使用して展開すると、ビルドに成功しますが、エンドポイントを試してみると、私は502しか得られません。ログがどこにあるか分からないので、これは本当に私のお尻を蹴っています。Google App EngineでのSpring Boot REST 502

私のpom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.mycompany.admin</groupId> 
    <artifactId>admin-api</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.6.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <!-- Exclude this for deployment only --> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-tomcat</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok</artifactId> 
     <optional>true</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <!-- other project dependencies --> 
    <dependency> 
     <groupId>com.google.firebase</groupId> 
     <artifactId>firebase-admin</artifactId> 
     <version>5.3.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jsoup</groupId> 
     <artifactId>jsoup</artifactId> 
     <version>1.10.2</version> 
    </dependency> 
    <!-- end other project specific dependencies --> 

    <!-- Dependencies provided during deployment --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jul-to-slf4j</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <!-- End dependencies for deployment --> 

    <!-- Dependencies for local --> 
    <!--  <dependency> --> 
    <!--   <groupId>org.springframework.boot</groupId> --> 
    <!--   <artifactId>spring-boot-starter-tomcat</artifactId> --> 
    <!--   <scope>provided</scope> --> 
    <!--  </dependency> --> 
    <!-- End dependencies for local --> 
    </dependencies> 

    <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> 
      <configuration> 
       <project>project-id-from-GAE-here</project 
      </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

私のアプリケーションクラスは、簡単な注釈付き@SpringBootApplicationクラスです。私は@RestControllerと簡単な@RequestMappingメソッドの注釈を持つ2つのコントローラを持っています。 RESTコントローラの1つは、/_ah/healthエンドポイントの場合、200を返します.1つのポストは、ヘルスチェックエンドポイントの不足によってトリガされたということです。

私は私の価値注射のための簡単なapplication.ymlを持っていると私は、この上の完全な損失で午前src/main/appengine

runtime: java 
env: flexible 
threadsafe: true 
manual_scaling: 
    instances: 1 
handlers: 
- url: /.* 
    script: this field is required, but ignored 
runtime_config: 
    jdk: openjdk8 

に置かれapp.yamlファイルを作成しました。うまくいけば、私は最初にGAEを展開しました。 (私はそれにドッカーを読み込む際に壊すのWindows 10マシンで午前ので、私もまだドッカーを使用しておりません。)

UPDATE 私はMavenプラグインの下に私のプロジェクトIDを置くことを忘れていたの通知をしました。私がそれをしたらapp.yamlが見つからないというエラーが出ます。私は柔軟な環境を使用しているので、appengine-web.xmlは必要なく、app.yamlではなくapp.ymlというファイル名を誤っていました。私はこれで私の質問を更新し、私はまだ成功した展開の後に502を取得しています。

+0

私は春のセキュリティを使用したときに私は同じ502を持っていました。私はapp.yamlのリソースをより良いマシンに指定しました。それが解決する。 – Evan

答えて

3

私はGAEに技術サポートが含まれている試用期間を知ったので、私はそれらに連絡しました。私のポンとapp.yamlを求められました。彼らの応答が私のapp.yamlに以下を追加した「Javaが高いメモリ使用量を消費するために知られているので、オーバーヘッドプロセスはおおよそ0.4ギガバイト値以上を消費している」

resources: 
    cpu: 2 
    memory_gb: 2.3 
    disk_size_gb: 10 
    volumes: 
    - name: ramdisk1 
    volume_type: tmpfs 
    size_gb: 0.5 

彼らはまたのために、このリンクを提供参照:https://cloud.google.com/appengine/docs/flexible/java/configuring-your-app-with-app-yaml#resource-settings

私がこのことをした後、私のアプリケーションはうまく動作し始めました。あなたは、単純なアプリケーションを持っている場合は、CPU時間で課金を取得し、あなたの毎日のクォータは28で、2つのCPUを使用すると、48 CPUの時間で終わるので、

EDIT

は、cpu:1を設定します。チュートリアルではRDB($ 80)を設定していたため、プロジェクトを終了させることはできません。また、新しいものを配備するときに古いバージョンを削除した場合や、アップグレードされているすべてのバージョンに対して料金が請求されるようにしてください。

関連する問題