3

Postgresql 8.1.21 で Django プロジェクトを実行しています (Django 1.1.1、Python2.5、psycopg2、Apache2 と mod_wsgi 3.2 を使用)。最近、この素敵なエラーが発生しました:

OperationalError: FATAL: connection limit exceeded for non-superusers

私はこれに立ち向かう最初の人ではありません。このエラーについては、特に psycopg で多くの議論がありますが、その多くは古いバージョンの Django に焦点を当てているか、Django 自体のコードの編集を含む解決策を提供しています。Django ORM (または、この場合は psycopg のいずれか、実際に責​​任がある方) が Postgre 接続を開いたままにする問題を解決する方法の簡潔な説明をまだ見つけていません。

すべてのビューの最後に追加するだけconnection.close()で、この問題は解決しますか? さらに良いことに、この問題を決定的に解決し、このエラーのお尻を蹴った人はいますか?

編集: 後で Postgresql の制限を 500 接続に引き上げました。これにより、エラーが発生するのを防ぎましたが、過剰なメモリ使用量に置き換えられました。

4

1 に答える 1

1

これは、他のことが原因である可能性があります。たとえば、理論的には、データベース自体が同時に受け入れることができるよりも多くの同時要求を受け入れることができるように、Apache/mod_wsgi を構成します。Apache/mod_wsgi の構成を確認し、クライアントの最大数の制限を PostgreSQL の制限と比較して、そのようなことが行われていないことを確認しましたか。明らかにこれは、Apache でその制限に到達したことを前提としていますが、データベース接続プーリングの設定方法にも依存します。

于 2010-06-15T23:26:29.417 に答える