CloudFoundry 环境上的 Java 应用的 Application container

SAP Business Technology Platform CloudFoundry 环境的 Java 应用支持下列 4 种 Application container:

  • Tomcat

  • TomEE

  • TomEE 7

  • Java Main

Tomcat

默认情况下,使用 SAP Java buildpack 推送的 Web 应用程序在 Apache Tomcat 容器中运行。

应用程序可以使用应用程序 manifest.yml 文件中的 TARGET_RUNTIME 环境变量显式定义目标应用程序容器。

---
applications:
- name: <APP_NAME>
  ...
  env:
    TARGET_RUNTIME: tomcat

tomcat 应用运行时容器提供以下标准 API:

  • Java Servlets 3.1

  • Java ServerPages (JSP) 2.3

  • Expression Language (EL) 3.0

  • Debugging Support for Other Languages 1.0

  • Java API for WebSocket 1.1

Customizing the SAP Java Buildpack Defaults

SAP Java Buildpack 为 Tomcat 应用程序容器提供了一些默认配置,这些配置可以由应用程序使用资源配置功能进行自定义。

以下是应用程序可以自定义的所有占位符及其默认值的列表:

[图片]

配置 HTTP header size 的例子:

env:
  JBP_CONFIG_RESOURCE_CONFIGURATION: "['tomcat/conf/server.xml': {'connector.maxHttpHeaderSize':1024}]"

配置最大线程数的例子:

env:
  JBP_CONFIG_RESOURCE_CONFIGURATION: "['tomcat/conf/server.xml': {'connector.maxThreads':800}]"

开启 HTTP trace 的例子:

env:
  JBP_CONFIG_RESOURCE_CONFIGURATION: "['tomcat/conf/server.xml': {'connector.allowTrace':true}]"

TomEE

默认情况下,使用 SAP Java buildpack 推送的 Web 应用程序在 Apache Tomcat 容器中运行。

通过使用应用程序 manifest.yml 文件中的 TARGET_RUNTIME 环境变量,应用程序可以显式定义目标应用程序容器 - Apache TomEE。

---
applications:
- name: <APP_NAME>
  ...
  env:
    TARGET_RUNTIME: tomee

Java Options

可以通过定义 JBP_CONFIG_JAVA_OPTS 环境变量来配置 Java 属性。

在应用程序的 manifest.yml 文件中定义 JBP_CONFIG_JAVA_OPTS 环境变量。

---
applications:
- name: <app-name>
  memory: 512M
...
  env:
     JBP_CONFIG_JAVA_OPTS: 'java_opts: ''-DtestJBPConfig=^%PATH^% -DtestJBPConfig1="test test" -DtestJBPConfig2="%PATH%"'''

使用 Cloud Foundry 命令行界面 (cf CLI) 的 cf set-env 命令定义 JBP_CONFIG_JAVA_OPTS 环境变量。

cf set-env myapp JBP_CONFIG_JAVA_OPTS “[java_opts: '-DtestJBPConfig=%PATH% -DtestJBPConfig1=“test test” -DtestJBPConfig2=”%PATH%"’]"

Java Out Of Memory Behavior

当 JVM 遇到终端故障时,SAP Java Buildpack 将堆的直方图打印到日志中。 除此之外,如果应用程序绑定到名称或标签包含 heap-dump 的卷服务,也会生成一个堆转储文件并将其存储在挂载的卷中。

ERR Stopping VM due to OutOfMemoryError
ERR Resource exhaustion event: the JVM was unable to allocate memory from the heap.
ERR ResourceExhausted! (1/0)
OUT | Instance Count | Total Bytes | Class Name |
OUT | 30130 | 5556616 | [C |
OUT | 866 | 2485600 | [B |
OUT | 29215 | 701160 | Ljava/lang/String; |
OUT | 3971 | 449528 | Ljava/lang/Class; |
OUT | 9998 | 319936 | Ljava/util/HashMap N o d e ; ∣ O U T ∣ 3624 ∣ 318912 ∣ L j a v a / l a n g / r e f l e c t / M e t h o d ; ∣ O U T ∣ 6429 ∣ 205728 ∣ L j a v a / u t i l / c o n c u r r e n t / C o n c u r r e n t H a s h M a p Node; | OUT | 3624 | 318912 | Ljava/lang/reflect/Method; | OUT | 6429 | 205728 | Ljava/util/concurrent/ConcurrentHashMap Node;OUT3624318912Ljava/lang/reflect/Method;OUT6429205728Ljava/util/concurrent/ConcurrentHashMapNode; |
OUT | 2821 | 171472 | [Ljava/lang/Object; |
OUT | 40 | 117328 | [J |
OUT | 750 | 111096 | [Ljava/util/HashMap N o d e ; ∣ O U T ∣ 5618 ∣ 89888 ∣ L j a v a / l a n g / O b j e c t ; ∣ O U T ∣ 1054 ∣ 74048 ∣ [ L j a v a / l a n g / S t r i n g ; ∣ O U T ∣ 696 ∣ 62552 ∣ [ I ∣ O U T ∣ 59 ∣ 51920 ∣ [ L j a v a / u t i l / c o n c u r r e n t / C o n c u r r e n t H a s h M a p Node; | OUT | 5618 | 89888 | Ljava/lang/Object; | OUT | 1054 | 74048 | [Ljava/lang/String; | OUT | 696 | 62552 | [I | OUT | 59 | 51920 | [Ljava/util/concurrent/ConcurrentHashMap Node;OUT561889888Ljava/lang/Object;OUT105474048[Ljava/lang/String;OUT69662552[IOUT5951920[Ljava/util/concurrent/ConcurrentHashMapNode;|
OUT | 1063 | 51024 | Ljava/util/HashMap; |
OUT | 854 | 40992 | Lorg/apache/tomcat/util/modeler/AttributeInfo;|

猜你喜欢

转载自blog.csdn.net/i042416/article/details/123600118