Я запускаю проект Django на Postgresql 8.1.21 (используя Django 1.1.1, Python2.5, psycopg2, Apache2 с mod_wsgi 3.2). Недавно мы столкнулись с этой прекрасной ошибки:Ограничения на соединение Django ORM и PostgreSQL
OperationalError: FATAL: connection limit exceeded for non-superusers
Я не первый человек, чтобы работать против этого. Об этой ошибке много обсуждается, в частности, с psycopg, но большая часть из них сосредоточена на более ранних версиях Django и/или предлагает решения, связанные с редактированием кода в самом Django. Мне еще предстоит найти краткое объяснение того, как решить проблему Django ORM (или psycopg, в зависимости от того, что действительно отвечает в этом случае), оставив открытые соединения Postgre.
Будет просто добавлено connection.close()
в конце каждого просмотра решить эту проблему? Еще лучше, кто-нибудь окончательно решил эту проблему и пнул эту ошибку?
Редактировать: позже мы увеличили предел Postgresql до 500 соединений; это предотвратило возникновение ошибки, но заменило ее чрезмерным использованием памяти.
Я буду казаться тупым, но вы имеете в виду настройку максимальных запросов WSGIDaemonProcess или MaxClient от Apache? – bennylope
Это действительно зависит от того, используете ли вы режим встроенного режима или демон в mod_wsgi. Я не могу угадать, что вы используете, поэтому нужно было обобщить. –
Спасибо, это имеет смысл. Я заметил, что база данных (ORM/psycopg) по-прежнему оставляет соединения открытыми даже после установки предела соединения с БД выше предела MaxClients (теперь выполняется во встроенном режиме). Это определенно хорошо знать; Я думаю, что в этом случае ошибка по-прежнему приводит к тому, что ORM (?) Не закрывает эти соединения. – bennylope