首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Play Framework2.2:错误:此异常已用id记录

Play Framework2.2:错误:此异常已用id记录
EN

Stack Overflow用户
提问于 2014-07-02 09:48:18
回答 2查看 6K关注 0票数 0

我已经完成了在游戏框架内建立一个网站。该网站部署在服务器上。但是,我正面临一些随机发生的问题,像这个.

代码语言:javascript
复制
This exception has been logged with id 6ilmmm0fk. 

我以前也犯了同样的错误。所以,我重新启动了完整的应用程序,然后它就消失了。但是,我再次面临同样的错误。

为什么会发生此错误?

我得到了像这样的堆栈跟踪

代码语言:javascript
复制
play.api.Application$$anon$1: Execution exception[[SQLException: Timed out waiting for a free available connection.]]
        at play.api.Application$class.handleError(Application.scala:293) ~[com.typesafe.play.play_2.10-2.2.2.jar:2.2.2]
        at play.api.DefaultApplication.handleError(Application.scala:399) [com.typesafe.play.play_2.10-2.2.2.jar:2.2.2]
        at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$2$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:261) [com.typesafe.play.play_2.10-2.2.2.jar:2.2.2]
        at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$2$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:261) [com.typesafe.play.play_2.10-2.2.2.jar:2.2.2]        at scala.Option.map(Option.scala:145) [org.scala-lang.scala-library-2.10.3.jar:na]
        at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$2.applyOrElse(PlayDefaultUpstreamHandler.scala:261) [com.typesafe.play.play_2.10-2.2.2.jar:2.2.2]
Caused by: java.sql.SQLException: Timed out waiting for a free available connection.
        at com.jolbox.bonecp.DefaultConnectionStrategy.getConnectionInternal(DefaultConnectionStrategy.java:88) ~[com.jolbox.bonecp-0.8.0.RELEASE.jar:na]
        at com.jolbox.bonecp.AbstractConnectionStrategy.getConnection(AbstractConnectionStrategy.java:90) ~[com.jolbox.bonecp-0.8.0.RELEASE.jar:na]
        at com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:553) ~[com.jolbox.bonecp-0.8.0.RELEASE.jar:na]
        at com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:131) ~[com.jolbox.bonecp-0.8.0.RELEASE.jar:na]
        at play.api.db.DBApi$class.getConnection(DB.scala:67) ~[com.typesafe.play.play-jdbc_2.10-2.2.2.jar:2.2.2]
        at play.api.db.BoneCPApi.getConnection(DB.scala:276) ~[com.typesafe.play.play-jdbc_2.10-2.2.2.jar:2.2.2][^[[31merror^[[0m] play - Cannot invoke the action, eventually got an error: java.sql.SQLException: Timed out waiting for a free available connection.
[^[[31merror^[[0m] application

堆栈跟踪显示,Timed Out for SQL query可能在数据库中有太多打开的连接。

更新

我发现数据库正在泄露连接。在检查代码时,我检查并更新了事务,如下所示

代码语言:javascript
复制
try{
      Ebean.beginTransaction()
       // All code goes here
       //
      Ebean.commitTransaction()
}catch{
       e.printStackTrace();
}finally{
      Ebean.endTransaction();
}

是否有更好的方法来识别打开的连接和循环孔。因为我仍然面临着上述问题。

更新

我已经转向了HikariCP JDBC,而不是Play frameworks。BoneCP处理连接关闭的方式存在问题。

EN

回答 2

Stack Overflow用户

发布于 2014-07-03 07:51:38

您可能希望将jdbc池配置为在连接上具有更长的超时时间。在你的application.conf中你可以拥有:db.default.connectionTimeout=30 seconds

有关更多信息:http://www.playframework.com/documentation/2.2.x/SettingsJDBC

票数 1
EN

Stack Overflow用户

发布于 2015-04-10 03:55:46

我没有找到解决上述问题的确切办法,只是做了一些工作。我切换到了DB连接的HikariCp,它解决了这个问题(它现在运行了5个月,没有单独的异常或线程泄漏)。如果他们正面临HikariCP的上述问题,我建议他们改用BoneCP。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24527954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档