![Apache:正常重启后响应标头被截断或过大](https://linux22.com/image/731906/Apache%EF%BC%9A%E6%AD%A3%E5%B8%B8%E9%87%8D%E5%90%AF%E5%90%8E%E5%93%8D%E5%BA%94%E6%A0%87%E5%A4%B4%E8%A2%AB%E6%88%AA%E6%96%AD%E6%88%96%E8%BF%87%E5%A4%A7.png)
正常重启后,一些 python wsgi 进程失败,错误代码 500(内部服务器错误):
[20:06:33] [mpm_prefork:notice] AH00171: Graceful restart requested, doing restart
[20:06:36] [wsgi:error] Truncated or oversized response headers received from daemon process 'foo_vums_di2865'
(上面的日志行已被删减,以便于阅读)
可能是什么原因?
有没有办法重新启动 apache 而不创建 500 个响应。
延迟几秒钟是可以的,但应该避免失败。
版本:
- 阿帕奇/2.4.34
- wsgi: 4.5.18
答案1
- 可能的原因:不是你的错。升级你的 wsgi 模块。请参阅错误修复列表。
版本 4.5.21
错误修复
由于 Apple 根本没有包含 apxs 程序,因此在装有最新 Xcode 的 MacOS X High Sierra 上,使用 pip 或 setup.py install 进行安装会失败。
推测守护进程关闭时崩溃是由于在解释器被销毁时访问 Python C API 时出现竞争条件而导致的。已进行了检查以避免这种情况,但可能不够强大,具体取决于内存缓存对于跨多核机器运行的线程的工作方式。现在使用专用线程互斥锁来避免主进程线程和 Python 解释器死锁检测线程之间的竞争条件。
如果问题仍然存在,请向 apache 和您的应用程序添加更多日志记录:
a. 在你的Apache 配置,设置
LogLevel
为info
在服务器重启/服务器发生错误时生成更多消息。这还会记录mod_wsgi
信息内容或可能的分段错误。b. 如果这些消息没有显示任何可疑内容,请添加请求/响应记录到您的应用程序(输入标头、响应状态和响应标头)。
仅供参考:您是否重新启动 apache 以反映应用程序代码中的更改?如果您想在守护进程模式下触发代码重新加载,您可以touch
更改脚本文件(更新时间戳)。然后守护进程将自动关闭并重新启动。
此外,您可以设置一个(受密码保护的)页面来强制重新启动守护进程。请参阅以守护进程模式重新加载/重新启动守护进程