web-dev-qa-db-ja.com

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'

(上記のログ行は読みやすくするために省略されています)

その理由は何でしょうか?

500応答を作成せずにApacheを再起動する方法はありますか?.

数秒の遅延は問題ありませんが、障害は回避する必要があります。

バージョン:

  • Apache/2.4.34
  • wsgi:4.5.18
3
guettli
  1. 考えられる理由:あなたのせいではありません。 wsgiモジュールをアップグレードします。 Bugs-Fixed-List の2番目の項目を参照してください。

バージョン4.5.21

修正されたバグ

  • Appleにはapxsプログラムさえ含まれていないため、pipまたはsetup.py installを使用したインストールはMacOS X High Sierraで失敗しました。

  • デーモンプロセスのシャットダウン時のクラッシュは、インタープリターが破棄されているときにPython C APIへのアクセスに関する競合状態が原因で発生したと推測されます。これを回避するためのチェックが行われましたが、十分に堅牢ではなかった可能性がありますマルチコアマシンで実行されているスレッドのメモリキャッシュの動作に応じて、専用スレッドミューテックスを使用して、メインプロセススレッドとPythonインタープリターデッドロック検出スレッドの間の競合状態を回避します。

  1. それでも問題が発生する場合は、Apacheとアプリケーションにログを追加します。

    a。 Apache構成LogLevelinfoに設定して、サーバーの再起動/サーバーエラーが発生したときにさらにメッセージを生成します。これもmod_wsgi情報提供またはセグメンテーション違反の可能性。

    b。これらのメッセージで疑わしいことが明らかにならない場合は、アプリケーションに request/response-logging を追加します(入力ヘッダー、応答ステータス、応答ヘッダー)。

参考:アプリケーションコードの変更を反映するためにApacheを再起動しますか?デーモンモードでコードのリロードをトリガーする場合は、変更されたスクリプトファイルをtouchすることができます(タイムスタンプを更新)。その後、デーモンプロセスはシャットダウンされ、自動的に再起動されます。

さらに、(パスワードで保護された)ページを設定して、デーモンプロセスを強制的に再起動することもできます。 デーモンモードでのリロード/デーモンプロセスの再起動 を参照してください。

3
Freddy