10

開発用PostgreSQLサーバーをセットアップしようとしています。実行中であり、コマンドラインからロールやテーブルなどを作成できます。ただし、Playを使用して進化を適用しようとすると、次のエラーが発生します。

org.postgresql.util.PSQLException: FATAL: sorry, too many clients already

接続できます。意図的に構文エラーを入力すると、構文エラーが返されるため、Playがデータベースに接続できることがわかります。ただし、evolutionが正常に適用された後、上記のエラーが発生します。

私はPostgreSQlの管理にあまり精通していないので、問題がPlayにあるのかPostgreSQLのインストールにあるのかわかりません。MountainLionを実行しているMacにHerokuのPostgres.appを使用してインストールしました。

コンソールに書き込まれる内容は次のとおりです。

! @6cnb0blpp - Internal server error, for request [GET /] ->

play.api.db.evolutions.InvalidDatabaseRevision: Database 'default' needs evolution! [An SQL script need to be run on your database.]
    at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1$$anonfun$apply$1.apply$mcV$sp(Evolutions.scala:427) ~[play_2.9.1.jar:2.0.4]
    at play.api.db.evolutions.EvolutionsPlugin.withLock(Evolutions.scala:448) ~[play_2.9.1.jar:2.0.4]
    at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:414) ~[play_2.9.1.jar:2.0.4]
    at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:412) ~[play_2.9.1.jar:2.0.4]
    at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) ~[scala-library.jar:0.11.3]
    at scala.collection.immutable.List.foreach(List.scala:45) ~[scala-library.jar:0.11.3]
[error] c.j.b.h.AbstractConnectionHook - Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 10. Exception: null
[error] c.j.b.h.AbstractConnectionHook - Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 9. Exception: null
[error] c.j.b.h.AbstractConnectionHook - Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 8. Exception: null
[error] c.j.b.h.AbstractConnectionHook - Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 7. Exception: null
[error] c.j.b.h.AbstractConnectionHook - Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 6. Exception: null
[error] c.j.b.h.AbstractConnectionHook - Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 5. Exception: null
[error] c.j.b.h.AbstractConnectionHook - Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 4. Exception: null
[error] c.j.b.h.AbstractConnectionHook - Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 3. Exception: null
[error] c.j.b.h.AbstractConnectionHook - Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 2. Exception: null
[error] c.j.b.h.AbstractConnectionHook - Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 1. Exception: null
[error] application - 

ありがとう!

4

3 に答える 3

6

許可される接続の数はpostgresql.conf、GUC (「Grand Unified Configuration」)で設定されmax_connectionsます。デフォルトは 100 です。

しかし、設定をいじる前に、自問する必要があります: クラスターが制限に達する前に、他の 100 個の接続はすべてどこから来たのでしょうか? これは通常、インストールまたはプログラムのバグを示しています!

接続プールと、Postgres Wikiの The Number of Connections に関するこの記事にも興味があるかもしれません。

于 2012-12-27T05:16:25.100 に答える
3

Postgres.app のデフォルトは max_connections = 10 です。 を参照してください~/Library/Application Support/Postgres/var/postgresql.conf

max_connections を 50 に増やしてこれを修正しました。Mountain Lion では、Postgres を起動するために shared_buffers を 500kB に減らす必要もありました。

于 2013-02-06T00:44:39.957 に答える
2

アプリケーションで使用される接続の数を減らすことができます。Macのインストールでも同じエラーが発生しました。公式ドキュメントに示されているように:

db.default.partitionCount=2

# The number of connections to create per partition. Setting this to 
# 5 with 3 partitions means you will have 15 unique connections to the 
# database. Note that BoneCP will not create all these connections in   
# one go but rather start off with minConnectionsPerPartition and 
# gradually increase connections as required.
db.default.maxConnectionsPerPartition=5

# The number of initial connections, per partition.
db.default.minConnectionsPerPartition=5
于 2012-12-27T12:37:17.933 に答える