我遇到了与Python psycopg2 postgresql驱动程序和libgcrypt模块相关的奇怪的生产特定错误。
我正在运行Debian 6,32bit以使用uWSGI和Nginx来托管我的应用程序。我决定用全新安装切换到64位。一切似乎都很好,除了我在uwsgi.log中的每个请求下面的Python回溯:
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(Django版本1.3.1)第166行,它似乎是最后一个异常处理程序,它可以保存所有内容。我把它改为:
except Exception, why:
并将“why”写入文本文件。唯一的例外是:
Error loading psycopg2 module: libgcrypt.so.11: failed to map segment from shared object: Cannot allocate memory
我几乎阅读了所有类似的bug / issue / blogpost,但只能找到一个相信不完全相同但却相似的问题: http://www.johngirvin.com/archives/dovecot-error-127-after-upgrading-to-debian-squeeze.html
我确实尝试过:
也重新启动,没有结果。我在系统上安装了postgresql-8.4,libgcrypt11和libgcrypt11-dev。除了带有Django默认值的新的./manage.py syncdb之外,PostgreSQL没有任何模型。有超过一半的内存只是空的。
而且......我也尝试在生产中运行./manage.py runserver,它运行得非常好。 VPS在Linode上,所以我认为没有任何硬件问题。
任何帮助将不胜感激。
答案 0 :(得分:0)
它可能不是关于Python,Django,PostgreSQL,psycopg2和libsomething.so。
检查uWSGI配置中是否有--limit-as选项。在64位系统上,地址空间可以是两倍大。 512或1024应该完成这项工作,所以必要时提高它。