sql >> データベース >  >> RDS >> PostgreSQL

DjangoORMはPostgresDBにアイドル状態の接続を残します

    どうやらあなたは切断しません。 db.close_connection()の使用 クエリが終了した後が役立ちます。また、正しく理解できればCONN_MAX_AGE いくつかの短い値に役立つ可能性があります。また、django接続にはpgbouncerなどのセッションプーラーを使用することを検討してください。このように、接続が多すぎる場合、エラーで実行を中止するのではなく、待機します(または構成によっては以前を再利用します)...

    更新 :私が提案する理由の説明

    ドキュメントから

    したがって、スレッドが多い場合は、postgres max_connections 、言及されたエラーが発生します。 CONN_MAX_AGEが渡されていない場合、各スレッドは接続を再利用できます。設定は0であるため、クエリの完了後に接続を閉じる必要がありますが、100のアイドル接続が表示されます。だから彼らは閉じていません。接続の数が多いということは、それらも再利用されないことを意味します(ロジック:100の並列クエリがある場合、すべてがアイドル状態になるわけではなく、接続数が多い場合、再利用されません-新規を開きます)。したがって、djangoはそれらを約束どおりに閉じないと思います-したがって、CONN_MAX_AGEを0に設定してもコードでは機能しません。そこで、db.close_connection()の使用を提案します 強制的に切断し、CONN_MAX_AGEを小さな値に設定すると、動作が変わる可能性があります。



    1. PHP mysqli Insertが機能しないが、エラーが発生しない

    2. MySQL:テーブルを作成できません(errno:150)

    3. ユーザーオプションに基づくPHPを使用した動的SQLSELECTステートメント

    4. varchar データ型から datetime データ型への変換で範囲外値エラーが発生しました