Ошибка «Не удается выделить память» для psycopg2 и libgcrypt.so в Debian 6, 64bit - PullRequest
1 голос
/ 09 ноября 2011

У меня странная ошибка, связанная с производством, связанная с драйвером Python psycopg2 postgresql и модулем libgcrypt.

Я использовал Debian 6, 32 бита, для размещения моего приложения с uWSGI и Nginx.Я решил перейти на 64bit со свежей установкой.Все выглядело нормально, за исключением того, что я получаю трассировку ниже 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...

Итак, я перешел в строку django / core / handlers / base.py (версия 1.3.1 Django)166, который кажется последним обработчиком исключений, который содержит все действительно исключительное.Я заменил его на:

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

Я попробовал:

  • Django == 1.3.1
  • Django == 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, поэтому я не думаю, что есть какие-либо проблемы с оборудованием.

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

1 Ответ

0 голосов
/ 25 февраля 2013

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

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

...