【问题标题】:Play-Scala-Slick hangs upPlay-Scala-Slick 挂断
【发布时间】:2021-05-29 03:02:45
【问题描述】:

使用以下版本在Scala中实现一个Play/REST/PostgreSQL服务

scalaVersion: "2.12.8"
playVersion: "2.7.3"
playSlickVersion: "4.0.2"

在服务器上加载负载时,它最终会锁定数据库访问。从 postgres 端(pg_stat_activity)查看时,所有数据库连接池连接都报告为“事务中的空闲”,并且都显示了最后一个已经(或正在)执行的查询。

Hikari 记录反复显示统计数据,例如

2021-02-26 19:04:25,383 [debug] [db housekeeper] [c.z.h.p.HikariPool] db - Pool stats (total=20, active=20, idle=0, waiting=0)
2021-02-26 19:04:25,383 [debug] [db housekeeper] [c.z.h.p.HikariPool] db - Fill pool skipped, pool is at sufficient level.

奇怪的是,当我配置数据库连接池以使 queueSize 小于 numThreads 时,它不会锁定。在这样的配置中,它确实从 slick.util.AsyncExecutor 给出了 RejectedExecutionException,但至少不会挂起。

任何人知道如何解释这种锁定以及如何使 queueSize 小于 numThreads 避免该问题?

热烈欢迎所有提示。

发送!

彼得

【问题讨论】:

    标签: scala playframework slick


    【解决方案1】:

    证明是https://github.com/playframework/play-slick/issues/445#issuecomment-625602447中描述的情况

    在避免上述问题中描述的构造之后,现在一切正常。

    【讨论】:

      猜你喜欢
      • 2016-08-19
      • 2013-10-29
      • 2016-08-18
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 2016-01-18
      • 2016-08-05
      相关资源
      最近更新 更多