我在Postgresql 8.1.21上運行Django項目(使用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的最大請求設置,還是Apache的MaxClient? – bennylope 2010-06-16 00:55:48
這真的取決於您是使用mod_wsgi的嵌入模式還是守護進程模式。我不能猜測你正在運行什麼,所以不得不推廣。 – 2010-06-16 02:47:17
謝謝,這很有道理。我注意到,即使將數據庫的連接限制設置爲高於MaxClients限制(現在以嵌入模式運行)之後,數據庫(ORM/psycopg)仍然保持連接打開狀態。這絕對是很好的知道;我認爲在這種情況下,錯誤仍然導致ORM(?)不關閉這些連接。 – bennylope 2010-06-16 14:59:11