微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Play-Scala-Slick 挂了

如何解决Play-Scala-Slick 挂了

使用以下版本在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 避免这个问题吗?

热烈欢迎所有提示

发送!

彼得

解决方法

证明是https://github.com/playframework/play-slick/issues/445#issuecomment-625602447

中描述的情况

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。