【问题标题】:Vaadin + Spring boot application very slow after long idle timeVaadin + Spring Boot 应用程序在长时间空闲后非常慢
【发布时间】:2018-07-13 09:59:24
【问题描述】:

我的 Vaadin 8 + Spring Boot 应用程序存在性能问题。

当我在长时间不使用后启动应用程序时,例如一晚后,需要几分钟才能从数据库中获取响应。

我有以下应用设置:

    spring.datasource.max-active=10
    spring.datasource.initial-size=5
    spring.datasource.max-idle=5
    spring.datasource.min-idle=1
    spring.datasource.test-while-idle=true
    spring.datasource.test-on-borrow=true
    spring.datasource.validation-query=SELECT 1
    spring.datasource.time-between-eviction-runs-millis=5000
    spring.datasource.min-evictable-idle-time-millis=60000

如果没有test-while-idlevalidation-querytest-on-borrow,我什至无法重新连接到数据库,但性能问题仍然存在。

【问题讨论】:

  • 首先,您应该隔离问题。如果您怀疑数据库调用很慢,请在您的应用程序中添加计时日志。 Java 应用程序速度慢的另一个可能原因可能是内存泄漏,这将更频繁地调用垃圾收集并最终以 OutOfMemoryException 结束。在这种情况下,您可以在应用程序运行缓慢时打印 GC 日志或进行堆转储。

标签: java performance spring-boot vaadin


【解决方案1】:

这看起来像是一个空闲的 JDBC 连接,它已经在 TCP/IP 级别超时了。我想知道是否有一个设置会在没有使用 JDBC 连接后自动关闭它,比如 2 分钟。或者一个心跳设置,它会在所有 JDBC 连接上每 5 分钟发出一次SELECT 1,以使其保持活动状态。

【讨论】:

    猜你喜欢
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2015-04-04
    • 2017-09-27
    相关资源
    最近更新 更多