kar*_*ete 12 apache django daemon mod-wsgi header
我最近将一个python django应用程序从debian系统迁移到了redhat企业发行版.应用程序使用httpd,mod_wsgi托管,并在守护进程中的venv中运行.在大型请求中,我现在在日志文件中收到以下错误消息:
"Truncated or oversized response headers received from daemon process"
Run Code Online (Sandbox Code Playgroud)
我从来没有经历过这样的事情,谷歌也不是这里的关键.我检查了apache的配置,但没有配置与响应头相关.
我的httpd.conf配置看起来像这样(非常标准):
WSGIPassAuthorization On
WSGIScriptAlias / /var/www/myapp/wsgi.py
WSGIDaemonProcess my.name python-path=/path/to/myapp/:/path/to/venv/lib/python2.7/site-packages display-name=%{GROUP}
WSGIProcessGroup my.name
Run Code Online (Sandbox Code Playgroud)
是否有任何上师暗示我应该朝哪个方向看?
我们最近遇到了这个问题,经过几天的艰苦探索和大量头痛之后,我们发现我们使用psycopg2-binary作为我们的数据库连接器依赖项(我知道,newbs)!它在其文档中正确声明不要在生产环境中使用该软件包。
我们确实添加了所有其他建议的答案,例如将“ WSGIApplicationGroup%{GLOBAL}”添加到了我们的设置中(我们保留了该设置),但是所有这些单独使用或一起使用都无法解决问题。
我们还发现其他C库(例如numpy)也会引起问题。
希望有一天能对某人有所帮助。
Django Webfaction'从守护进程读取响应头时超时'
http://initd.org/psycopg/docs/install.html#prerequisites
Apache通过mod_wsgi使用的代码对mod_wsgi守护进程模式进程返回的单个响应头的大小施加限制.这将导致来自Apache的一个非常神秘的错误消息,它根本没有指出问题.从内存中,上一个错误是:
Premature end of script headers
Run Code Online (Sandbox Code Playgroud)
大小限制也在Apache中进行了硬编码,无法更改.这导致一些Python Web应用程序出现问题,例如OpenStack中的Keystone,它会生成非常大的身份验证标头.
在mod_wsgi 4.1+中,已经删除了对Apache代码的依赖,现在可以配置限制.您已经看到,错误消息也更具体.
从mod_wsgi守护程序模式返回的内容的默认最大标头大小,即标头名称和值,大约为8192字节.您可以使用WSGIDaemonProcess的'header-buffer-size'选项来覆盖它.
你能指出什么应用程序和什么标题是如此之大,以至于达到了限制,因为想知道除Keystone之外的其他Python Web应用程序如果是常用的应用程序,还会生成如此大的标题.
从该消息中的"截断"引用派生的第二种可能性是您的mod_wsgi守护程序进程崩溃.您没有说,虽然您看到了"分段错误"或类似的消息,表明发生了崩溃.检查一下,如果当时错误日志中还有其他消息,那么请指出它们是什么,并将其视为主要问题.
结果发现这并不是真正的问题。问题更加严重,因为我将 Cairo 更改为 CairoCffi,而 RSVG-Handler 无法处理来自 Cffi 的上下文对象。不,我的实际问题是拥有一个最新的 python 库,它允许我将 svg 转换为 png。使用 CairoSVG 的 svg2png 对我不起作用。我得到一个
开罗返回 CAIRO_STATUS_NO_MEMORY:内存不足
我确信这是错误的,它没有再次说出真相,问题出在其他地方。但让我们看看。
归档时间: |
|
查看次数: |
9263 次 |
最近记录: |