cloud-foundry - 为什么 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
解决方案
推荐阅读
- python - 使用 Python 中的入住和退房日期计算每天的预订数量
- c# - 将 DataGrid 行号绑定到属性
- reactjs - React useHistory,对象的类型为“未知”
- firebase - flutter build apk --release 在运行flutter build apk时失败-调试工作正常
- javascript - 从两个不同的数组中创建键值对
- android - 从我的应用程序播放和暂停外部音频?
- machine-learning - 学习者的基准比较结果取决于重采样的实例化。我该如何解释呢?
- visual-studio - Visual Studio 2019 - 使用本地 Nuget 存储库时包管理器 GUI 冻结,但当提琴手工作时它工作得很快
- vb.net - 为结构中的属性赋值
- java - 成功验证凭据流后的Oauth2 springboot