2013-04-29 5 views
6

javaでPlay Framework 2.0.4のアプリを構築しています。アプリはherokuに配備され、クリアデータベースがあります。SQLException:無料の接続を待機中にタイムアウトになりました

ユーザーは、この臨時のエラーを取得しておいてください。

PlayException: Execution exception [[PersistenceException: java.sql.SQLException: Timed out waiting for a free available connection.]] 
    at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:134) 
    at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:115) 
    at akka.actor.Actor$class.apply(Actor.scala:318) 
    at play.core.ActionInvoker.apply(Invoker.scala:113) 
    at akka.actor.ActorCell.invoke(ActorCell.scala:626) 
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:197) 
    at akka.dispatch.Mailbox.run(Mailbox.scala:179) 
    at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:516) 
    at akka.jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:259) 
    at akka.jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975) 
    at akka.jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1479) 
    at akka.jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104) 
Caused by: javax.persistence.PersistenceException: java.sql.SQLException: Timed out waiting for a free available connection. 
    at com.avaje.ebeaninternal.server.transaction.TransactionManager.createQueryTransaction(TransactionManager.java:356) 
    at com.avaje.ebeaninternal.server.core.DefaultServer.createQueryTransaction(DefaultServer.java:2021) 
    at com.avaje.ebeaninternal.server.core.OrmQueryRequest.initTransIfRequired(OrmQueryRequest.java:241) 
    at com.avaje.ebeaninternal.server.core.DefaultServer.findId(DefaultServer.java:1212) 
    at com.avaje.ebeaninternal.server.core.DefaultServer.find(DefaultServer.java:1118) 
    at com.avaje.ebeaninternal.server.core.DefaultServer.find(DefaultServer.java:1105) 
    at play.db.ebean.Model$Finder.byId(Model.java:237) 

今すぐ悪化していると私はHerokuのでアプリを再起動するまで、時々、すべてのユーザーが同じエラーを毎回取得します。

デバッグのヒントやヒントはありますか?

答えて

5

私はこの問題は、30秒後に接続を閉じるHeroku/Play/BoneCp connection issues

Herokuのと同じだと思います。 Build.scalaに、boneCp 0.8.0.rc1を追加した後

+0

boneCP 0.8.0.rc2と指定されたboneCP設定パラメータは、昨日以来発生していません。 – KirdApe

0

こんにちは、この問題もありますが、それを解決できましたか? 私はこれについてウェブで検索しました。 データベースへの接続を閉じることはありません。 しかし、私はそれらをまったく開いていません、私は遊びが私のためにこれを行うことを意味します。 コードクローズがスカラでのみ動作することも発見しました。

最後に見つかった "解決策"は100%で動作していませんが、設定ファイルにあります。 http://www.playframework.com/documentation/2.0/SettingsJDBC

+0

は、私はまだ同じ問題を抱えています。 boneCP 0.7.1にはいくつかのバグがあります。パラメータを手にしても問題は解決しませんでした。おそらく、あなたはboneCPをアップグレードしようとすることができますhttp://stackoverflow.com/questions/15480506/heroku-play-bonecp-connection-issues – KirdApe

2

db.default.idleMaxAge=10 minutes 
db.default.idleConnectionTestPeriod=30 seconds 
db.default.connectionTimeout=20 second 
db.default.connectionTestStatement="SELECT 1" 
db.default.maxConnectionAge=30 minutes 

が、私は開いたページを左にして、リフレッシュを打つ特にとき、私はまだ、タイムアウトエラーが発生しました。

+0

boneCP 0.8.0-rc2の問題にアップグレードしました – KirdApe

+0

私のデータベースをpostgresqlに変更する途中ですが、これらのエラーは消えたようです。私はまだpostgresqlのDBで苦労していますが。 – lopesdasilva

2

私は同じ問題に直面していました。再生アプリケーションに大きなreuqestスレッドがあり、再生でDBプールを維持できないときにこの問題が発生しました.DBプールを維持するためにPlayを快適にするためには、あなたaplliaction.confファイル

  • db.default.maxConnectionsPerPartition = 100 //で、これは最大 接続あなたのプレイFrameworkがtiが中に
  • db.default.minConnectionsPerPartition = 10 //を維持する必要があるものを言います最小開始方法 多くのDB接続には、持っている必要があり
  • db.default.acquireIncrement = 10 // DB接続は、それが割り当てる必要がどのくらい続い maxConnectionsPerPartitionに超えたらもっと プールに
関連する問題