2010-06-15 4 views
2

저는 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와 관련이 있습니다.하지만 대부분은 장고의 이전 버전을 중심으로하고 있으며, 장고 자체에서 코드를 편집하는 것과 관련된 솔루션을 제공합니다. 나는 장고 ORM (또는 psycopg,이 경우 실제로 책임이있는 것)의 문제를 해결하는 방법에 대한 간결한 설명을 아직 찾지 못한 채 열려있는 Postgre 연결을 남긴다.

단순히 모든보기 끝에 connection.close()을 추가하면이 문제가 해결됩니까? 더 나은 아직, 누구든지이 문제를 결정적으로 해결하고이 오류의 엉덩이를 걷어차?

편집 : 우리는 나중에 500 개의 연결로 Postgresql의 제한을 올렸습니다. 이로 인해 오류가 발생하지 않았지만 과도한 메모리 사용으로 바뀌 었습니다.

답변

1

다른 이유로 인해 발생할 수 있습니다. 예를 들어 이론적으로 Apache/mod_wsgi를 구성하면 데이터베이스 자체가 동시에 수용 할 수있는 것보다 많은 동시 요청을 수용 할 수 있습니다. Apache/mod_wsgi 구성을 검토하고 최대 클라이언트의 제한을 PostgreSQL의 제한과 비교하여 아직 수행되지 않았는지 확인하십시오. 분명히 이것은 비록 여러분이 아파치에서 그 한계에 다다를 수 있었고, 또한 어떻게 데이터베이스 연결 풀링이 설정되어 있는지에 달려 있다고 생각합니다.

+0

나는 둔한 소리가 나겠지만, WSGIDaemonProcess의 최대 요청 설정 또는 Apache MaxClient를 언급하고 있습니까? – bennylope

+0

정말 mod_wsgi의 내장 모드 또는 데몬 모드를 사용하는지 여부에 달려 있습니다. 나는 네가 무엇을 운영하고 있는지 짐작 해 일반화해야했다. –

+0

감사합니다. 데이터베이스 (ORM/psycopg)가 DB의 연결 제한을 MaxClients 제한 (지금은 포함 된 모드로 실행 중)을 초과하여 설정 한 후에도 연결을 열어 두는 것으로 나타났습니다. 확실히 알고있는 것이 좋다. 이 인스턴스에서 오류가 여전히 이러한 연결을 닫지 ORM (?) 발생합니다 생각합니다. – bennylope