Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Playframework 播放2.5应用程序(死锁?)变得无响应_Playframework_Play Authenticate_Deadbolt 2 - Fatal编程技术网

Playframework 播放2.5应用程序(死锁?)变得无响应

Playframework 播放2.5应用程序(死锁?)变得无响应,playframework,play-authenticate,deadbolt-2,Playframework,Play Authenticate,Deadbolt 2,我最近升级到玩2.5。一切正常,直到我突然无法访问web应用程序中的任何页面时,系统开始忙于生成报告(在单独的线程中)。我在日志中没有看到任何错误。play 2.3.8版本在相同的环境/负载下工作正常。我没有看到一个解决方案,然后删除门闩,看看它是否修复了问题,因为它为下面列出的用户所做的。短暂性脑缺血发作 锁紧螺栓2.5.4 “播放-U 2.11”%“0.8.1” 我看到其他几个用户也有类似的问题,他们不得不移除门闩来解决这个问题 (2017年2月8日)我仍在研究这个问题,因为它在两台生产

我最近升级到玩2.5。一切正常,直到我突然无法访问web应用程序中的任何页面时,系统开始忙于生成报告(在单独的线程中)。我在日志中没有看到任何错误。play 2.3.8版本在相同的环境/负载下工作正常。我没有看到一个解决方案,然后删除门闩,看看它是否修复了问题,因为它为下面列出的用户所做的。短暂性脑缺血发作

锁紧螺栓2.5.4 “播放-U 2.11”%“0.8.1”

我看到其他几个用户也有类似的问题,他们不得不移除门闩来解决这个问题

(2017年2月8日)我仍在研究这个问题,因为它在两台生产机器上出现故障,但在两台开发机器上工作。开发机器是物理的,并且有稍新的Java版本。生产机器都是虚拟的,并且运行Java build 1.8.0_66。解决此问题后,我将对线程池进行调优。我发布了两个解决方案,它们都在两台开发机器上工作(Java>1.8.0_66的物理机器)


有关更多信息,请参阅。

我遇到了类似的问题,在我的情况下,此错误后应用程序变得无响应:

PersistenceException: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
我从play authenticate中发现Ebean在TokenAction类中的静态使用存在问题,我必须改变这一点:

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();
}
公共静态void deleteByUser(最终用户u,最终类型){
QueryIterator迭代器=find.where()
.eq(“targetUser.id”,u.id).eq(“type”,type).findItemate();
删除(迭代器);
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();
}
公共静态void deleteByUser(最终用户u,最终类型){
QueryIterator迭代器=find.where()
.eq(“targetUser.id”,u.id).eq(“type”,type).findItemate();
while(iterator.hasNext()){
iterator.next().delete();
}
iterator.close();
}

我遇到了类似的问题,在我的情况下,应用程序在出现此错误后变得无响应:

PersistenceException: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
我从play authenticate中发现Ebean在TokenAction类中的静态使用存在问题,我必须改变这一点:

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();
}
公共静态void deleteByUser(最终用户u,最终类型){
QueryIterator迭代器=find.where()
.eq(“targetUser.id”,u.id).eq(“type”,type).findItemate();
删除(迭代器);
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();
}
公共静态void deleteByUser(最终用户u,最终类型){
QueryIterator迭代器=find.where()
.eq(“targetUser.id”,u.id).eq(“type”,type).findItemate();
while(iterator.hasNext()){
iterator.next().delete();
}
iterator.close();
}

默认情况下,死锁使用
HttpExecution.defaultContext()
作为其执行上下文。如果您编写自己的
DeadboltExecutionContextProvider
实现来使用自定义线程池并将其绑定到模块中,那么Deadbolt将使用它。你能告诉我一声吗?您可以找到有关配置线程池的详细信息。默认线程池配置在Play 2.3和2.4之间发生了更改,因此您可能会看到这样做的副作用。有关详细信息,请参阅。感谢您的回复,我将按照您的建议进行操作并让您知道。我安装了默认的akka配置(在上面的链接中),它修复了问题。我还创建了一个CustomDeadboltExecutionContextProvider,并将使用默认的Play2.5配置来使用它。如果我找到更好的,我会把它贴在这里。太好了,谢谢!默认情况下,死锁使用
HttpExecution.defaultContext()
作为其执行上下文。如果您编写自己的
DeadboltExecutionContextProvider
实现来使用自定义线程池并将其绑定到模块中,那么Deadbolt将使用它。你能告诉我一声吗?您可以找到有关配置线程池的详细信息。默认线程池配置在Play 2.3和2.4之间发生了更改,因此您可能会看到这样做的副作用。有关详细信息,请参阅。感谢您的回复,我将按照您的建议进行操作并让您知道。我安装了默认的akka配置(在上面的链接中),它修复了问题。我还创建了一个CustomDeadboltExecutionContextProvider,并将使用默认的Play2.5配置来使用它。如果我找到更好的,我会把它贴在这里。太好了,谢谢!谢谢你的回复,这真的是一个很好的信息,我会把它存档以备将来的问题。我先写了史蒂夫的回复,这似乎正是我要处理的问题。谢谢你的回复,这真的是一个很好的信息,我会把它存档以备将来的问题。我先写了史蒂夫的回复,这似乎正是我要处理的问题。