Tôi đã sử dụng Play 2.0.2 để tạo một ứng dụng Java. Trong một vài ngày, tôi đang gặp vấn đề. Sau ~ 100 yêu cầu máy chủ bắt đầu ném ngoại lệ này:Play2.0 trả về "SQLException: Đã hết thời gian chờ kết nối khả dụng miễn phí".
[[SQLException:. Hết thời gian chờ cho một kết nối có sẵn miễn phí]]
tôi tạo ra một thể hiện mới của Connection
với DB.getConnection()
. Tôi không đóng các trường hợp Connection
vì chỉ có một phiên bản của mỗi yêu cầu và theo như tôi biết nó sẽ tự động đóng Connection
trường hợp khi kết nối TCP đang hoạt động bị đóng. Tôi đã cố gắng tăng giá trị db.default.connectionTimeout
lên 100 seconds
nhưng không thể khắc phục được sự cố. Sau đó, tôi đã kiểm tra các kết nối Postgresql đang hoạt động và không có kết nối hoạt động. Ngoài ra tôi khởi động lại Postgresql nhưng nó cũng không thể khắc phục vấn đề.
Giải pháp duy nhất cho vấn đề này hiện tại là giết chết phiên bản Play20 và bắt đầu một phiên bản mới.
Đây là Play2.0 log được tạo ra:
! @6cg9il6ki - Internal server error, for request [GET [AN URL]] ->
play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[SQLException: Timed out waiting for a free available connection.]]
at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:134) [play_2.9.1.jar:2.0.2]
at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:115) [play_2.9.1.jar:2.0.2]
at akka.actor.Actor$class.apply(Actor.scala:318) [akka-actor.jar:2.0.2]
at play.core.ActionInvoker.apply(Invoker.scala:113) [play_2.9.1.jar:2.0.2]
at akka.actor.ActorCell.invoke(ActorCell.scala:626) [akka-actor.jar:2.0.2]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:197) [akka-actor.jar:2.0.2]
Caused by: java.sql.SQLException: Timed out waiting for a free available connection.
at com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:503) ~[bonecp.jar:0.7.1.RELEASE]
at com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:114) ~[bonecp.jar:0.7.1.RELEASE]
at play.api.db.DBApi$class.getConnection(DB.scala:64) ~[play_2.9.1.jar:2.0.2]
at play.api.db.BoneCPApi.getConnection(DB.scala:273) ~[play_2.9.1.jar:2.0.2]
at play.api.db.DB$$anonfun$getConnection$1.apply(DB.scala:129) ~[play_2.9.1.jar:2.0.2]
at play.api.db.DB$$anonfun$getConnection$1.apply(DB.scala:129) ~[play_2.9.1.jar:2.0.2]
AFAIK, bạn phải ngắt kết nối sau khi sử dụng (trong một 'khối finally' ví dụ) –
http://stackoverflow.com/questions/16275102/sqlexception-timed-out-waiting-for-a -free-available-connection/28395713 # 28395713 –