【发布时间】:2021-08-10 23:11:14
【问题描述】:
我正在运行一个 Spring Boot 应用程序,它充当前端 Javascript 应用程序的后端。前端作为静态资源提供给客户端,后端提供来自它的 API 请求。该应用程序最初设计为在本地运行,但应以允许轻松移植到云原生解决方案的方式构建。
我希望后端能够完成一些繁重的 ETL 工作,这在内存和 CPU 方面会很繁重。同时,它不需要扩展以服务许多并发请求 - 它只需要服务启动和管理作业的请求,这些作业将由与其交互的单个用户调用。
我可以调整哪些参数以针对此类部署进行微调?
目前的想法:
- 将
server.tomcat.max-threads减少到一位数以最小化请求线程池的占用空间,因为我预计不会同时处理超过一到两个 - 对数据库连接池执行相同操作
- 在启动 JAR 时微调
Xms和Xmx
对于如何确保 Java 应用程序在系统上占用尽可能大的空间以及我可以调整的 Spring Boot 特定参数的任何其他见解,我将不胜感激。谢谢。
【问题讨论】:
-
这个问题不够集中,可能会引起固执己见的回答。因此,我认为,这对 SO 来说是题外话。这是一个问答平台,而不是讨论论坛或邮件列表。
-
应用运行后,您可以尝试调整垃圾收集设置,看看它如何影响您的性能。这是一篇关于 gc 调优的有用博客文章:blog.gceasy.io/2020/06/02/simple-effective-g1-gc-tuning-tips
-
我同意@kriegaex 这是一个非常广泛的问题。似乎是什么问题(具有长期运行的业务逻辑、webserver/servlet 容器、数据库连接池、JVM)?为什么你认为它需要微调?您尝试了哪些方法(分析、指标收集、负载测试等)来缩小可能存在的瓶颈?
标签: java spring-boot tomcat resources etl