首页 > 解决方案 > 为什么 PCF 任务实例的性能不如 PCF Web 实例。PCF 任务应用程序实例在处理大文件时终止

问题描述

我们正在使用 Spring Boot 创建文件处理服务。我们从 DB 获取 XML 文件作为 Clob 并将其转换为字符串(然后我们将解组字符串到 JAXBElement 进行处理)。

由于它是文件处理服务,我们将此服务设计为作为 PCF 任务应用程序运行,这样当应用程序完成文件处理时,它将终止并释放云资源(RAM、磁盘)。

当我们使用 PCF 任务应用程序处理小文件(尝试到 60MB)时,我们没有问题。但是当我们尝试处理 150 MB 文件时,Task 应用程序实例正在终止而没有任何错误日志。

我们部署了与 PCF Web 应用程序实例相同的应用程序,并使用 REST API 来处理文件。然后我们就可以处理文件了。

任务应用程序配置:

我们从任务实例的 1GB RAM 内存和 1GB 磁盘空间开始,并将 RAM 内存增加到 5GB 和 2GB 磁盘空间仍然应用程序无法处理文件。

网络应用配置:

具有 2Gb RAM 和 1GB 磁盘空间。使用 REST API 开始文件处理,我们能够处理文件。

为什么会有这种差异?

代码片段:

if (clob != null) {

  BufferedReader reader = new BufferedReader(new InputStreamReader(clob.getAsciiStream()));

  String read = null;

  StringBuffer sb = new StringBuffer();

   LOGGER.info("Before While Loop");

   while ((read = reader.readLine()) != null) {

  sb.append(read);

  }

   LOGGER.info("After While Loop");

  String xml = sb.toString();

}

PCF 任务应用程序日志:

2020-04-02T15:54:19.787+05:30 [APP/TASK/Bulk File/0] [OUT] 2020-04-02 10:24:19.786 INFO 15 --- [ main] c.f.g.s.s.impl.ServiceImpl : Before While Loop

2020-04-02T15:54:29.180+05:30 [APP/TASK/Bulk File/0] [OUT] 2020-04-02 10:24:29.180 INFO 15 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...

2020-04-02T15:54:29.220+05:30 [APP/TASK/Bulk File/0] [OUT] 2020-04-02 10:24:29.220 INFO 15 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.

2020-04-02T15:54:29.490+05:30 [APP/TASK/Bulk File/0] [OUT] Exit status 1

2020-04-02T15:54:29.630+05:30 [CELL/0] [OUT] Cell 17fd36a9-3f6b-4957-89b5-83639048dadf stopping instance 204e6fc5-6998-47d3-89dc-59ac702caccd

2020-04-02T15:54:29.630+05:30 [CELL/0] [OUT] Cell 17fd36a9-3f6b-4957-89b5-83639048dadf destroying container for instance 204e6fc5-6998-47d3-89dc-59ac702caccd

标签: cloud-foundrypcfpcfdevpivotal-web-services

解决方案


推荐阅读