PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Django ORM оставя неактивни връзки на Postgres DB

явно не прекъсваш връзката. Използване на db.close_connection() след приключване на заявката ще помогне. Също така, ако съм разбрал правилно CONN_MAX_AGE до някаква кратка стойност може да помогне. И обмислете използването на някакъв сесиен пулер, например pgbouncer за django връзки. По този начин, ако имате твърде много връзки, тя ще изчака (или ще използва повторно предишната, в зависимост от конфигурацията), вместо да прекъсне изпълнението с грешка...

актуализация :обяснение защо го предлагам

от документи

Така че, ако имате повече нишки, тогава postgres max_connections , получавате спомената грешка. Всяка нишка може да използва повторно връзката, ако CONN_MAX_AGE не е преминал. Вашата настройка е 0, така че връзката трябва да бъде затворена след завършване на заявката, но виждате 100 неактивна връзка. Така че те не се затварят. Големият брой връзки означава, че те също не се използват повторно (логика:ако имате 100 паралелни заявки, те няма да са неактивни, а ако имате толкова много, те не се използват повторно - отварят се нови). Така че мисля, че django не ги затваря, както е обещано - така че CONN_MAX_AGE, зададен на 0, не работи във вашия код. Затова предлагам да използвате db.close_connection() за принудително прекъсване на връзката и задаване на CONN_MAX_AGE на някаква малка стойност може да промени поведението.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:Сравнение на низове без регистри

  2. Избягвайте да вмъквате „null“ стойности в таблицата на базата данни чрез JPA

  3. Имената на колоните в PostgreSQL са чувствителни към главни букви?

  4. По-добре ли е да се използват таблици вместо тип поле за масиви в PostgreSql, когато масивите не надвишават 50 елемента?

  5. Как да прехвърлям varchar към boolean