Play 2.5应用程序(deadbolt?)变得反应迟钝

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Play 2.5应用程序(deadbolt?)变得反应迟钝相关的知识,希望对你有一定的参考价值。

我最近升级到2.5。一切正常,直到系统忙于生成报告(在单独的线程中),当我突然无法访问Web应用程序中的任何页面时。我没有在日志中看到任何错误。播放2.3.8版本在相同的情况/负载下工作正常。除了下面列出的用户之外,我没有看到解决问题的解决办法之外的解决问题。 TIA

deadbolt 2.5.4“play-authenticate_2.11”%“0.8.1”

我看到其他几个用户有类似的问题,不得不删除deadbolt来解决它。

Play framework [2.5.0 java] - Blocked netty-event-loop threads resulting in timeout

Play 2.5 application requests hang

(17年2月8日)我仍然在研究这个问题,因为它在两台生产机器上失败,但在两台开发机器上工作。开发机器是物理的,并且具有稍微更新的Java版本。生产机器都是虚拟的,并运行Java build 1.8.0_66。一旦我解决了这个问题,我将努力调整线程池。我发布了两个解决方案,这两个解决方案都适用于两台开发机器(Java> 1.8.0_66的物理机器)。

有关更多信息,请参阅https://www.coalliance.org/play-25-upgrade

答案

我有一个类似的问题,在我的情况下,应用程序在此错误后没有响应:

PersistenceException: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.

我发现在TokenAction类中从play-authenticate静态使用Ebean是一个问题,我不得不改变这个:

public static void deleteByUser(final User u, final Type type) {
    QueryIterator<TokenAction> iterator = find.where()
            .eq("targetUser.id", u.id).eq("type", type).findIterate();
    Ebean.delete(iterator);
    iterator.close();
}

对此:

public static void deleteByUser(final User u, final Type type) {
    QueryIterator<TokenAction> iterator = find.where()
            .eq("targetUser.id", u.id).eq("type", type).findIterate();
    while(iterator.hasNext()) {
        iterator.next().delete();
    }
    iterator.close();
}

以上是关于Play 2.5应用程序(deadbolt?)变得反应迟钝的主要内容,如果未能解决你的问题,请参考以下文章

受 Deadbolt“限制”注释影响的 Jackson 解串器

播放框架变得无响应? (可能是内存问题)

Play Framework (2.5) - JMX port enable to see in JVisualVM

Play Ebean 从 2.4 升级到 2.5 后不生成 Id

Play Framework 2.5 JavaAsync 抛出 CompletionException

如何在 Play 2.5 框架中使用授权 ActionBuilder 保护静态文件