Apache:正常重启后响应标头被截断或过大

Apache:正常重启后响应标头被截断或过大

正常重启后,一些 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

  1. 可能的原因:不是你的错。升级你的 wsgi 模块。请参阅错误修复列表

版本 4.5.21

错误修复

  • 由于 Apple 根本没有包含 apxs 程序,因此在装有最新 Xcode 的 MacOS X High Sierra 上,使用 pip 或 setup.py install 进行安装会失败。

  • 推测守护进程关闭时崩溃是由于在解释器被销毁时访问 Python C API 时出现竞争条件而导致的。已进行了检查以避免这种情况,但可能不够强大,具体取决于内存缓存对于跨多核机器运行的线程的工作方式。现在使用专用线程互斥锁来避免主进程线程和 Python 解释器死锁检测线程之间的竞争条件。

  1. 如果问题仍然存在,请向 apache 和您的应用程序添加更多日志记录:

    a. 在你的Apache 配置,设置LogLevelinfo在服务器重启/服务器发生错误时生成更多消息。这还会记录mod_wsgi信息内容或可能的分段错误。

    b. 如果这些消息没有显示任何可疑内容,请添加请求/响应记录到您的应用程序(输入标头、响应状态和响应标头)。

仅供参考:您是否重新启动 apache 以反映应用程序代码中的更改?如果您想在守护进程模式下触发代码重新加载,您可以touch更改脚本文件(更新时间戳)。然后守护进程将自动关闭并重新启动。

此外,您可以设置一个(受密码保护的)页面来强制重新启动守护进程。请参阅以守护进程模式重新加载/重新启动守护进程

相关内容