首页 > 解决方案 > 针对高 CPU/内存工作负载优化 Spring Boot 后端

问题描述

我正在运行一个 Spring Boot 应用程序,它充当前端 Javascript 应用程序的后端。前端作为静态资源提供给客户端,后端提供来自它的 API 请求。该应用程序最初设计为在本地运行,但应以允许轻松移植到云原生解决方案的方式构建。

我希望后端做一些繁重的 ETL 工作,这在内存和 CPU 方面会很繁重。同时,它不需要扩展以服务许多并发请求 - 它只需要服务启动和管理作业的请求,这些请求将由与其交互的单个用户调用。

我可以调整哪些参数以针对此类部署进行微调?

目前的想法:

我将不胜感激有关如何确保 Java 应用程序在系统上占用尽可能大的空间以及我可以调整的 Spring Boot 特定参数的任何其他见解。谢谢你。

标签: javaspring-boottomcatresourcesetl

解决方案


如果您有长时间运行的后台任务,我会卸载工作到线程并将最大线程数设置为系统中的 CPU 数。还要在 executor 的队列上设置一个最大容量,这样你就不会因为太多的待处理工作而使它超载。

卸载到不同的线程将确保容器的线程保持可用,并且您不会最终得到一个完全无响应的系统。

您对最大堆大小和连接池的建议是有效的。


推荐阅读