我遇到的情况几乎与此处描述的情况相同:Play framework resource starvation after a few days
我的应用程序很简单,播放2.6 + PostgreSQL + Slick 3。 而且,数据库检索操作仅是Slick,而且很简单。 使用场景是数据通过一个端点进入,然后存储到数据库中(有些参与者以异步方式存储一些数据,这可能会因默认策略而失败),并通过其余端点提供服务。
到目前为止很好。
几天后,与数据库有关的每个端点都停止响应。应用程序是连接到RDS实例的单个实例上t3介质上的服务器。与RDS的连接计数始终相同且稳定,大多数情况下处于空闲状态。
我还注意到,实际上是调用了数据库并执行了查询,但是请求永远不会结束或获取任何数据。
最简单的端点(POST)用于发布反馈-基本上是一个班轮:
feedbackService.storeFeedback(feedback.deviceId, feedback.message).map(_ => Success)
这个成功的东西是包裹在Ok(“ something”)周围的,所以那里没有魔术。 反馈服务以一种Slick首选的方式将一条记录存储在数据库中,那里也没有什么疯子。
调用反馈后,我注意到在psql客户端中,INSERT查询已被执行,并且数据确实最终在数据库中,但是HTTP请求永远不会结束,并且不会返回任何成功数据。并行地,调用与数据库无关的端点,这些端点的确返回一些值,例如状态端点,这没有问题。
生产日志未显示任何内容,重启帮助一两天。 我想正在发生某种资源匮乏的问题,但是目前我不在那儿。