sql >> Databáze >  >> RDS >> PostgreSQL

Django ORM nechává nečinná připojení na Postgres DB

zjevně se neodpojíš. Pomocí db.close_connection() po dokončení dotazu pomůže. Také pokud to chápu správně CONN_MAX_AGE na nějakou krátkou hodnotu by mohlo pomoci. A zvažte použití nějakého pooleru relací, např. pgbouncer pro připojení django. Tímto způsobem, pokud máte příliš mnoho připojení, bude čekat (nebo znovu použije předchozí, v závislosti na konfiguraci) namísto přerušení provádění s chybou...

aktualizovat :vysvětlení, proč to navrhuji

z dokumentů

Takže pokud máte více vláken, pak postgres max_connections , dostanete zmíněnou chybu. Každé vlákno může znovu použít připojení, pokud CONN_MAX_AGE neprošlo. Vaše nastavení je 0, takže připojení by mělo být po dokončení dotazu uzavřeno, ale vidíte 100 nečinné připojení. Takže se nezavírají. Velký počet připojení znamená, že se ani znovu nepoužívají (logika:pokud byste měli 100 paralelních dotazů, nebyly by všechny nečinné, a pokud jich máte tolik, znovu se nepoužívají - otevírání nových). Takže si myslím, že je django nezavře, jak bylo slíbeno - takže CONN_MAX_AGE nastavený na 0 ve vašem kódu nefunguje. Navrhuji tedy použít db.close_connection() vynucení odpojení a nastavení CONN_MAX_AGE na nějakou malou hodnotu může změnit chování.



  1. Dapper Oracle Number(10,0) je vráceno jako chyba Decimal Parser

  2. Jak vyplnit díry v polích automatického přírůstku?

  3. 10 užitečných zdrojů pro ty, kteří se chtějí dozvědět více o SQL

  4. CAST DECIMAL na INT