Apache2和mod_wsgi:守护进程进程返回的响应头过长或过大

4
我的应用程序正在使用Apache 2服务器,使用mod_wsgi,Flask和Python 2.7运行。奇怪的是,在页面刷新时应用程序会崩溃。对我来说,这在每两次刷新后发生一次。您可以在此处看到它。此外,在Chrome中,如果我打开Web检查工具,则程序不会崩溃。
在日志中,我看到:
[Tue Apr 14 13:45:29.137444 2015] [wsgi:error] [pid 32713] [client 146.203.54.32:58816] Truncated or oversized response headers received from daemon process 'localhost:80': /etc/g2e/htdocs/g2e
[Tue Apr 14 13:45:29.671493 2015] [core:notice] [pid 28845] AH00052: child pid 640 exit signal Segmentation fault (11)
[Tue Apr 14 13:45:29.671520 2015] [wsgi:info] [pid 28845] mod_wsgi (pid=640): Process 'localhost:80' has died, deregister and restart it.
[Tue Apr 14 13:45:29.671524 2015] [wsgi:info] [pid 28845] mod_wsgi (pid=640): Process 'localhost:80' terminated by signal 11
[Tue Apr 14 13:45:29.671527 2015] [wsgi:info] [pid 28845] mod_wsgi (pid=640): Process 'localhost:80' has been deregistered and will no longer be monitored.
...

顺便说一句,我正在使用

Linux 3.16.7-7-desktop #1 SMP PREEMPT Wed Dec 17 18:00:44 UTC 2014 (762f27a) x86_64 x86_64 x86_64 GNU/Linux

非常感谢您提供任何帮助。


2
mod_wsgi邮件列表上的讨论是https://groups.google.com/forum/#!topic/modwsgi/JdSAnqoJDTw - Graham Dumpleton
我认为回答我的问题并不公平,因为我自己没有正确解决这个问题。但是顺便说一下,我无法使用Graham的建议解决这个问题,并且担心在服务器已经在生产中的情况下进行太多的操作。最终,我使用了Docker和全新安装的Apache、mod_wsgi等来解决问题。 - jds
1个回答

0

我可能有一个小调整。我之前也遇到了这个问题,但现在它不知怎么就好了。

  • 我尝试将mod_wsgi作为守护进程运行。我的应用程序没有工作,并且在日志中出现了这个错误消息。
  • 然而,以非守护进程的方式运行mod_wsgi是可以的,例如

    python manage.py runmodwsgi --reload-on-changes # 适用于Django
    

    所以我再次启动它,然后杀掉它。

  • 我的应用程序仍在运行 :)

(mod_wsgi 4.4.[1-13],apache2,python 2.7,Django 1.7,Debian8 新安装,带或不带 virtualenv)


好吧,至少在生产环境中,守护进程模式是推荐的配置。 - mlissner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接