13

私はしばらくこれに取り組んできました。まったく新しいマシンをセットアップしました。postgresql と他のすべての依存関係の新しいコピーをインストールしました。基本的に、これらのデータベースの切断はランダムに発生します。同じリクエストを実行できますが、機能するか機能しないかのどちらかです。外観が非常に非決定論的です。Postgresql でログを見ると、接続さえ取得できません。さて、接続が確立されていない場合、接続を確立してカーソルを取得するときにこの問題が発生すると予想されますが、後で実際に接続を使用しようとすると発生します。以下のトレースバックを考えると、pg ログで接続が行われ、後で何らかの理由で切断されることが予想されます。ないので、そのミスマッチに何か手がかりがあるのか​​なと。

Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/core/handlers/wsgi.py", line 242, in __call__
    response = self.get_response(request)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/core/handlers/base.py", line 73, in get_response
    response = middleware_method(request)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/middleware/locale.py", line 16, in process_request
    language = translation.get_language_from_request(request)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/utils/translation/__init__.py", line 97, in get_language_from_request
    return real_get_language_from_request(request)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/utils/translation/trans_real.py", line 349, in get_language_from_request
    lang_code = request.session.get('django_language', None)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/contrib/sessions/backends/base.py", line 63, in get
    return self._session.get(key, default)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/contrib/sessions/backends/base.py", line 172, in _get_session
    self._session_cache = self.load()
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/contrib/sessions/backends/db.py", line 16, in load
    expire_date__gt=datetime.datetime.now()
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/db/models/manager.py", line 120, in get
    return self.get_query_set().get(*args, **kwargs)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/db/models/query.py", line 300, in get
    num = len(clone)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/db/models/query.py", line 81, in __len__
    self._result_cache = list(self.iterator())
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/db/models/query.py", line 238, in iterator
    for row in self.query.results_iter():
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/db/models/sql/query.py", line 287, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/db/models/sql/query.py", line 2369, in execute_sql
    cursor.execute(sql, params)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/db/backends/util.py", line 19, in execute
    return self.cursor.execute(sql, params)
OperationalError: server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
4

4 に答える 4

5

これは、ここに投稿されたものと非常によく似た質問です。

Django + FastCGI - ランダムに OperationalError を発生させる

誰かが最終的にそれを理解した場合でも、いつでも答えは同じになると思います。この同じ問題が約 1 か月間私を悩ませてきましたが、何が原因なのかわかりません。

于 2009-10-16T18:58:24.890 に答える
2

子プロセスはありますかfork()(事前にフォークされた FastCGI または類似のものを使用します)? これが、親プロセスで確立された接続が子プロセスで機能しない理由である可能性があります。preforked メソッドを使用すると、問題が解決したかどうかを確認するためにスレッド化に簡単に切り替えることができます。そのような場合、まったく同じフローティングエラーが発生しました。

于 2009-10-15T16:53:15.530 に答える