sql >> Database teknologi >  >> RDS >> PostgreSQL

Django ORM efterlader inaktive forbindelser på Postgres DB

tilsyneladende afbryder du ikke forbindelsen. Brug af db.close_connection() efter forespørgslens afslutning ville hjælpe. Også hvis jeg forstår det rigtigt CONN_MAX_AGE til en vis kort værdi kunne hjælpe. Og overvej at bruge en sessionspooler, f.eks. pgbouncer til django-forbindelser. På denne måde, hvis du har for mange forbindelser, vil det vente (eller genbruge tidligere, afhængigt af konfiguration) i stedet for at afbryde udførelse med fejl...

opdatering :forklaring på hvorfor jeg foreslår det

fra docs

Så hvis du har flere tråde, så postgres max_connections , får du nævnt fejl. Hver tråd kan genbruge forbindelsen, hvis CONN_MAX_AGE ikke har bestået. Din indstilling er 0, så forbindelsen bør lukkes efter fuldførelse af forespørgslen, men du ser 100 inaktiv forbindelse. Så de lukker ikke. Det store antal forbindelser betyder, at de heller ikke genbruges (logik:hvis du ville have 100 parallelle forespørgsler, ville de ikke alle være inaktive, og hvis du har så mange, genbruges de ikke - åbner nyt). Så jeg tror, ​​django ikke lukker dem som lovet - så CONN_MAX_AGE sat til 0 virker ikke i din kode. Så jeg foreslår at bruge db.close_connection() at tvinge afbrydelsen og indstilling af CONN_MAX_AGE til en lille værdi kan ændre adfærd.



  1. jdbc.SQLServerException:Login mislykkedes for bruger for enhver bruger

  2. Tilslutning af .NET på Linux til en ODBC-datakilde

  3. Bruger MySQL væsentligt flere ressourcer sammenlignet med andre DBMS?

  4. SQL Server - hvor er sys.functions?