【发布时间】:2019-04-18 05:57:32
【问题描述】:
我在具有 16 GB RAM 的 ubuntu 系统上运行 jar 文件。我在开发应用程序时使用了 Spring Boot 框架、JPA。 我观察到应用程序启动后内存和 CPU 使用率不断增加。
不断增加 CPU 使用率和内存的可能原因是什么?
应用程序正在做什么操作 -> 使用
更新文本文件 File file = new File(file path);
OutputStream os = new FileOutputStream(file.getAbsoluteFile());
和读取操作
FileInputStream inputStream = new FileInputStream(file);
InputStreamResource resource = new InputStreamResource(inputStream);
以一分钟的频率更新文件。
我尝试在两种情况下运行 jar 并在 tomcat 服务器上部署 war 文件,它们的行为相同。
主要目的是创建 proto-buffer 文本文件。我已经添加了
@Scheduled(fixedDelay = 60000)
@RequestMapping(value = "/test")
public String generateProtoBuf(){
...
}
所以这个方法每分钟都会触发和更新文本文件。
我公开了另一个 API。
@RequestMapping(path = "/getProtoBuf", method = RequestMethod.GET)
public ResponseEntity<Resource> getProtoBuf() throws IOException {
...
}
此 API 将每分钟调用一次。 文件大小将小于 1 MB。
最初的几个小时应用程序运行正常,但几个小时后,当 cpu 使用率增加 15% 时,它会急剧增加并达到 100%。
【问题讨论】:
-
文件在加载后是否保留在内存中,还是被垃圾回收?
-
那些不应该对性能有任何影响。尝试分析应用程序?
-
JViusualM 自带 SDK。
-
@jalako 我没有将文件存储在内存中,文件会定期在某个位置更新。
-
@Buffalo 我试图分析应用程序,但无法找到增加内存和 CPU 使用率的根本原因。
标签: java spring-boot ubuntu protocol-buffers cpu-usage