sql >> Databasteknik >  >> RDS >> PostgreSQL

Django ORM lämnar lediga anslutningar på Postgres DB

tydligen kopplar du inte bort. Använder db.close_connection() efter avslutad fråga skulle hjälpa. Om jag förstår rätt CONN_MAX_AGE till något kort värde kan hjälpa. Och överväg att använda någon sessionspooler, t.ex. pgbouncer för django-anslutningar. På det här sättet om du har för många anslutningar kommer det att vänta (eller återanvända tidigare, beroende på konfiguration) istället för att avbryta körningen med fel...

uppdatering :förklaring till varför jag föreslår det

från docs

Så om du har fler trådar så postgres max_connections , får du nämnt fel. Varje tråd kan återanvända anslutningen om CONN_MAX_AGE inte har passerat. Din inställning är 0, så anslutningen bör stängas efter att frågan har slutförts, men du ser 100 lediga anslutningar. Så de stänger inte. Det stora antalet anslutningar gör att de inte heller återanvänds (logik:om du skulle ha 100 parallella frågor skulle de inte alla vara lediga, och om du har så många återanvänds de inte - öppnar ny). Så jag tror att django inte stänger dem som utlovat - så CONN_MAX_AGE satt till 0 fungerar inte i din kod. Så jag föreslår att du använder db.close_connection() att tvinga bort frånkopplingen och ställa in CONN_MAX_AGE till något litet värde kan ändra beteendet.



  1. Hur kan jag köra bara satsen som min markör står på i SQL Server Management Studio?

  2. Postgresql kasta null-värde i kolumn bryter mot noll-begränsningen vid användning av oneToMany-relation i JPA

  3. Kan jag blanda MySQL API:er i PHP?

  4. Vad är det för fel på den här koden som använder mysql-tillägget för att hämta data från en databas i PHP?