У меня странная производственная ошибка, связанная с драйвером Python psycopg2 postgresql и модулем libgcrypt.
Я использовал Debian 6, 32-разрядную версию для размещения своего приложения с помощью uWSGI и Nginx. Я решил перейти на 64-битную версию с новой установкой. Все выглядело нормально, за исключением того, что я получаю ниже трассировки Python для каждого запроса в uwsgi.log:
File ".../python2.7/site-packages/django/core/handlers/wsgi.py", line 272, in __call__
response = self.get_response(request)
File ".../python2.7/site-packages/django/core/handlers/base.py", line 169, in get_response
response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
File ".../python2.7/site-packages/django/core/handlers/base.py", line 203, in handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
File ".../python2.7/site-packages/django/views/debug.py", line 59, in technical_500_response
html = reporter.get_traceback_html()
and so on...
Итак, я перешел к строке 166 django/core/handlers/base.py (версия Django 1.3.1), которая кажется последним обработчиком исключений, который содержит все действительно исключительное. Я заменил его на:
except Exception, why:
и напишите «почему» в текстовый файл. Исключением является именно это:
Error loading psycopg2 module: libgcrypt.so.11: failed to map segment from shared object: Cannot allocate memory
Я читал почти все похожие ошибки/проблемы/сообщения в блогах и смог найти только тот, который считает, что проблема не совсем такая же, но очень похожая: http://www.johngirvin.com/archives/dovecot-error-127-after-upgrading-to-debian-squeeze.html
Я пробовал с:
- Джанго == 1.3.1
- Джанго==1.3
- psycopg2==2.4.2
- psycopg2==2.4.1
также перезагрузил, что не дало результата. У меня в системе установлены postgresql-8.4, libgcrypt11 и libgcrypt11-dev. У PostgreSQL нет модели, кроме свежей ./manage.py syncdb с дефолтными Django. Там больше половины памяти просто пусто.
И... Я также пытался запустить ./manage.py runserver на производстве, который отлично работает. VPS находится на Linode, поэтому я не думаю, что есть какая-то аппаратная проблема.
Любая помощь будет оценена.