Ошибка выделения памяти для psycopg2 и libgcrypt.so в Debian 6, 64-разрядная версия

У меня странная производственная ошибка, связанная с драйвером 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, поэтому я не думаю, что есть какая-то аппаратная проблема.

Любая помощь будет оценена.


person kirpit    schedule 09.11.2011    source источник
comment
Я думаю, что я должен задать этот вопрос serverfault.com. Возможно, поздно.. Кто-нибудь знает, могу ли я его переместить?   -  person kirpit    schedule 09.11.2011


Ответы (1)


Возможно, речь идет не о Python, Django, PostgreSQL, psycopg2 или libsomething.so.

Проверьте, есть ли у вас такая опция, как --limit-as. в вашей конфигурации uWSGI. В 64-битных системах адресное пространство может быть вдвое больше. 512 или 1024 должны работать, поэтому увеличьте их по мере необходимости.

person kirpit    schedule 24.02.2013